本文是采用lua + assetBundle 作为热更资源。如果你不了解Slua 可以点这里 。assetBundle具体怎么用可以百度。

unity的热更流程,其实就是把所有的资源打包成 assetBundle ,包括场景也是。然后把这个assetBundle 下载到Application.persistentDataPath这个目录,然后用www来动态加载新内容。Application.persistentDataPath这个目录是针对平台的可读写目录,适用于热更。下面是具体的操作流程演示。


1.unity热更主要两部分,代码和资源。

①制作需要热更的场景,随便拖几个东西。改个名字叫 myScene.scene

unity xlua代码热更新代码ios unity 热更新流程_Desktop

②制作入口场景,其实就是新建空场景,然后拖个按钮过来,上面绑两个脚本。Demo.cs 和 ResUpdate.cs

unity xlua代码热更新代码ios unity 热更新流程_实际开发_02

这个入口场景改名叫 begin.scene

2.制作需要热更的资源

这里资源包括lua代码还有一些prefabs

unity xlua代码热更新代码ios unity 热更新流程_实际开发_03

--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

然后用热更打包的菜单去打包资源和场景。

unity xlua代码热更新代码ios unity 热更新流程_热更新_04

①资源:多选选中你需要打包的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目录那么你要手动改下。