Skip to main content
  » »

2016年10月15日 14:14:45775610

这些日子正在找Unity3D的现成框架,期望能给后续项目开辟带来便当。找着找着,便存眷到了LuaFramework,那是一套基于tolua的框架,能够实现热更新。但是相干的材料太少,磕磕碰碰的实验以后,便有写一篇入门教程的设法主意。那套文章应该会有4篇阁下,触及LuaFramework的安装、代码热更新、资本热更新、lua文件的编写等几项内容。

阐明:下一篇文章“资本热更新”估计会正在下周收回。

1、安装框架

只要正在http://www.ulua.org/index.html下载LuaFramework,然后用Unity3D翻开,这里用的是LuaFramework_UGUI-1.0.4.109版本和Unity3D 5.2,其他版本理应类似。翻开以后需求点击lua菜单内里的Generate All和LuaFramework菜单里Build XXX Resources,以天生一些需要的文件。

安装历程能够拜见http://pan.baidu.com/s/1gd8fG4N内里的01_uLua_Windows.avi和02_SimpleFramework_UGUI_Windows.avi两个视频(若是正在windows体系下)。框架结构请拜见http://doc.ulua.org/article/ngui/simpleframework_base1.html,这里不再复述。

若运转后可以或许弹出树模界面,证实安装胜利,能够进入下一步。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第1张

胜利运转树模界面(可要客户端可以或许运转起来便止)

2、运转Lua代码

那一步的目的很简朴,就是让框架运转我们本身写的lua代码,显现一句“helloWorld”。下一步再思索代码的热更新题目。

1)新建场景

正在恣意物体中增加Main组件。实在Main组件内里只是挪用了AppFacade.Instance.StartUp(),那是框架的出发点。框架将会主动完成资本加载、热更新等等事项。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第2张

增加Main组件

2)删掉示例的挪用

如今不需要框架自带的示例了,需求删掉一些代码,使框架只运转我们编写的lua文件。翻开Assets\LuaFramework\Scripts\Manager\GameManager.cs,将OnInitalize修正成下图这个模样。那是lua的入口,框架会挪用Main.lua的Main要领。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第3张

修正GameManager的lua入口 

3)编写lua代码

翻开Assets\LuaFramework\Lua\main.lua,编写lua代码。这里只增加一句“LuaFramework.Util.Log("HelloWorld");”(以下所示),它的功用相当于Debug.Log("HelloWorld")。

--主入口函数。从这里最先lua逻辑

function Main()

    LuaFramework.Util.Log("HelloWorld");

end

“LuaFramework.Util.Log("HelloWorld")”中的Util是c#里界说的类,供lua中挪用。能够翻开Assets\LuaFramework\Editor\CustomSettings.cs看到一切能够供lua挪用的类,如下图是CustomSettings.cs的局部语句。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第4张

CustomSettings.cs的局部语句

再由详细的类能够查找所有的API(拜见上面两个图),如下图是Util类的局部语句。

www.0627.com

Util类(Assets\LuaFramework\Scripts\Utility\Util.cs)的局部语句

4)运转游戏

点击菜单栏中LuaFramework→Build Windows Resource,天生资本文件。然后运转游戏,便可正在控制台中看到打印出的HelloWorld。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第6张

天生资本文件

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第7张

运转效果

根据默许的设置,每变动一次lua代码,皆需求实行Build XXX Resource才气见效。读者能够将Assets\LuaFramework\Scripts\ConstDefine\AppConst.cs中的LuaBundleMode修正为false,如许代码文件便不会以AssetBundle形式读取,会间接见效,以轻易调试。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第8张

设置LuaBundleMode

3、热更新的道理

接下来便要实验代码热更新,让顺序下载服务器上的lua文件,然后运转它。正在阐明热更新之前,需求先看看Unity3D热更新的一样平常要领。如下图所示,Unity3D的热更新会触及3个目次。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第9张

热更新的历程

游戏资本目次:内里包罗Unity3D工程中StreamingAssets文件夹下的文件。安装游戏以后,这些文件将会被一字不差天复制到目的机械上的特定文件夹里,差别平台的文件夹差别,以下所示(上图以windows平台为例)

Mac OS或Windows:Application.dataPath + "/StreamingAssets";

IOS: Application.dataPath + "/Raw";

Android:jar:file://" + Application.dataPath + "!/assets/";

数据目次:因为“游戏资本目次”正在Android和IOS上是只读的,不克不及把网上的下载的资本放到内里,以是需求竖立一个“数据目次”,该目次可读可写。第一次开启游戏后,顺序将“游戏资本目次”的内容复制到“数据目次中”(步调1,这个步调只会实行一次,下次再打开游戏便不复制了)。游戏历程中的资本加载,都是从“数据目次”中获得、解包(步调3)。差别平台下,“数据目次”的地点也不同,LuaFramework的界说以下:

Android或IOS:Application.persistentDataPath + "/LuaFramework"    

Mac OS或Windows:c:/LuaFramework/

调试形式下:Application.dataPath + "/StreamingAssets/"

注:”LuaFramework”和”StreamingAssets”由设置决意,这里与默认值

网络资源地点:寄存游戏资本的网址,游戏开启后,顺序会从网络资源地点下载一些更新的文件到数据目次。

这些目次包罗着差别版本的资本文件,和用于版本掌握的files.txt。Files.txt的内容如下图所示,内里寄存着资本文件的称号和md5码。顺序会先下载“网络资源地点”上的files.txt,然后取“数据目次”中文件的md5码做对照,更新有转变的文件(步调2)。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第10张

files.txt

LuaFramework的热更新代码界说正在Assets\LuaFramework\Scripts\Manager\GameManager.cs,真正用到项目时能够借需少量窜改。

4、最先热更新代码吧!

那么最先测试热更新代码的功用吧!热更上述实现的“HelloWorld”。

1)修正设置

框架的默许设置是从当地加载文件,需求翻开AppConst.cs将UpdateMode设置为true(才会实行步调2),将LuaBundleMode设置为true,将WebUrl设置成服务器地点。如下图所示。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第11张

AppConst的设置

2)设置“网络资源”

笔者运用iis开启当地服务器,然后将StreamingAssets内里的一切内容复制到服务器上面。需要时要设置一些权限,让一切文件皆皆能够下载。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第12张

经由过程网络接见文件

3)测试热更新

改一下Lua剧本(如将HelloWorld改为Hello Lpy2),点击Build Windows Resource,将“工程目次/StreamingAssets”内里的文件复制到服务器上。再将剧本改成其他内容,然后Build Windows Resource,掩盖失落当地资本。运转游戏,若是顺序显现“Hello Lpy2”的代码,证实胜利从网上推与了文件。

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第13张

代码热更新

笔者也是方才打仗LuaFramework,念看看该框架是不是适用于团队接下来的项目。谢谢ToLua和LuaFramework作者的无私奉献。下一节将会引见运用LuaFramework做资本热更新的内容。感谢支撑。

最初是告白工夫

笔者行将出书的一本Unity3D实战类书籍《Unity3D网络游戏实战》。该书经由过程一个完好的多人坦克对战实例,具体引见网络游戏开辟历程中涉及到的常识和技能。书中还引见了服务端框架、客户端网络模块、UI体系的架构等内容。信赖透过本书,读者可以或许把握Unity3D网络游戏开辟的大部分常识,也可以或许从框架设想中相识贸易游戏的设想思绪,谢谢人人支撑。

经由过程《Unity3D网络游戏实战》读者便能够学会建造如许的多人对战游戏

更多便正在中国AR网(http://www.chinaar.com/)

中国AR网(微疑民众号:armeiti)

Unity3D热更新LuaFramework入门实战(1)——代码热更新 Unity3D教程 第14张


上一篇:

下一篇:

相干推荐

批评列表久无批评
宣布批评