Unity3D热更新-LuaFramework

发表于2018-09-04
评论0 8.1k浏览
1、运行框架

1.下载LuaFramework,然后用Unity3D打开,打开之后需要点击lua菜单里面的Generate All和LuaFramework菜单里Build XXX Resources,以生成一些必要的文件

2.然后就可以运行起来了。

2、配置框架

1.找到LuaFramework\ConstDefine\AppConst.cs

自带服务器框架模式:
/// <summary>
/// 如果开启更新模式,前提必须启动框架自带服务器端。
/// 否则就需要自己将StreamingAssets里面的所有内容
/// 复制到自己的Webserver上面,并修改下面的WebUrl。
/// </summary>
public const bool UpdateMode = true;          //更新模式-默认关闭 
public const string WebUrl = "http://localhost:6688/";    //测试更新地址

下载 ServerFramework把StreamingAssets里面的所有内容复制到ServerFramework-master\Assets\StreamingAssets
//GameServer\service\HttpServer.cs
public HttpServer(int port) {
            //服务器地址
            host = "http://localhost:6688/";
        }

找到:ServerFramework-master\Server\bin\Debug\SuperSocket.SocketService.exe 运行
好了,运行一下你的程序吧。在这里已经可以实现动态的更新了。

Web实现热更新
笔者使用iis开启本地服务器,然后将StreamingAssets里面的所有内容复制到服务器上面。必要时要配置一些权限,让所有文件都都可以下载。

locallhost/StreamingAssets/files.txt
/// <summary>
/// 否则就需要自己将StreamingAssets里面的所有内容
/// 复制到自己的Webserver上面,并修改下面的WebUrl。
/// </summary>
public const bool UpdateMode = true;          //更新模式-默认关闭 
//服务器地址填写一下就可以了。
public const string WebUrl = "http://localhost/StreamingAssets/";    //测试更新地址

3、运行Lua代码

现在不需要框架自带的示例了,需要删掉一些代码,使框架只运行我们编写的lua文件。打开Assets\LuaFramework\Scripts\Manager\GameManager.cs,将OnInitalize修改成下图这个样子。这是lua的入口,框架会调用Main.lua的Main方法。
void OnInitialize() {
            LuaManager.InitStart();
            //LuaManager.DoFile("Logic/Game");         //加载游戏
            //LuaManager.DoFile("Logic/Network");      //加载网络
            //NetManager.OnInit();                     //初始化网络
            //Util.CallMethod("Game", "OnInitOK");     //初始化完成
            initialize = true;

4、编写Lua代码

打开Assets\LuaFramework\Lua\main.lua,编写lua代码。这里只添加一句“LuaFramework.Util.Log(“HelloWorld”);”(如下所示),它的功能相当于Debug.Log(“HelloWorld”)。
--主入口函数。从这里开始lua逻辑
--主入口函数。从这里开始lua逻辑
function Main()                 
        LuaFramework.Util.Log("Hello World");   
end

5、运行游戏

后面这个操作将不在提示,每次修改代码后自行执行这个操作
点击菜单栏中LuaFramework→Build Windows Resource,生成资源文件。然后运行游戏,即可在控制台中看到打印出的HelloWorld。
HelloWorld

游戏资源目录:里面包含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”由配置决定,这里取默认值
来自:https://blog.csdn.net/u013108312/article/details/53924608

Unity3D热更新之LuaFramework系列

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引