本文是采用lua + assetBundle 作为热更资源。如果你不了解Slua 可以点这里 。assetBundle具体怎么用可以百度。
unity的热更流程,其实就是把所有的资源打包成 assetBundle ,包括场景也是。然后把这个assetBundle 下载到Application.persistentDataPath这个目录,然后用www来动态加载新内容。Application.persistentDataPath这个目录是针对平台的可读写目录,适用于热更。下面是具体的操作流程演示。
1.unity热更主要两部分,代码和资源。
①制作需要热更的场景,随便拖几个东西。改个名字叫 myScene.scene
②制作入口场景,其实就是新建空场景,然后拖个按钮过来,上面绑两个脚本。Demo.cs 和 ResUpdate.cs
这个入口场景改名叫 begin.scene
2.制作需要热更的资源
这里资源包括lua代码还有一些prefabs
--main.txt
function main()
print("hello world")
end
--newLua.txt
function sayHello()
print("来自热更的lua打印");
end
sayHello();
这个newLua.txt就是后面将要热更的新代码
3.打包要热更的资源
*如果是第一次使用sLua 那么要先点Slua菜单clean后make
我们这次热更不需要用到cdn,本地环境就可以测试了。首先在桌面创建tmp目录,当作是服务器cdn。//如C:\Users\Administrator\Desktop\tmp
然后用热更打包的菜单去打包资源和场景。
①资源:多选选中你需要打包的prefabs+代码.txt ,点击打包资源,并保存到上面的tmp目录。(实际开发应该远程服务端cdn)
②场景:打开你需要热更的场景,点击打包场景,并保存到上面的tmp目录。
③创建版本文件:点击就行了。因为我在代码里面写死了C:\Users\Administrator\Desktop\tmp 这个目录。(实际开发是一个http的url)
4.运行
上面的准备工作已经完成,可以运行begin场景。点击一下启动热更的按钮即可。
5.其他
热更时候下载的ab到底去哪了?去了Application.persistentDataPath 这个目录。
C:\Users\Administrator\AppData\LocalLow\DefaultCompany\项目名字
ResUpdate.cs这个文件,由于我是演示,我写死了本地路径和远程路径,如果你不想在桌面建一个tmp目录那么你要手动改下。