首页 > 代码库 > Unity热更新相关概念
Unity热更新相关概念
热更新实现方式
1. 使用Lua脚本编写游戏逻辑(Lua调用C#的方式),Lua解析器(也叫Lua虚拟机)在运行时解析Lua脚本,无须编译
2. C#反射技术
3. C#Light(什么鬼?)
如何学习热更新
1. 学习Lua编程
关于uLua的学习,我们可以参考官网,以及官方bbs来学习。上面有详细的视频文字教程
官网:http://www.ulua.org/index.html
官方bbs:http://bbs.ulua.org/
官网:http://www.ulua.org/index.html
官方bbs:http://bbs.ulua.org/
2. 使用LuaInterface、Luanet进行Lua和C#交互
3. 学习使用AssetBundle进行资源更新
4. 学习Lua热更新框架(SimpleFramework等)
热更新流程
步骤1. 将StreamingAsset目录下的文件,全部复制到目标平台(ios/Android)的数据目录中(第一次运行游戏时)
步骤2. 启动游戏前刷新所有文件夹,客户端文件(csv文件)与服务上的文件(file.txt)对比MD5,记录不同的文件,下载对应的文件替换,启动场景
步骤3. 从数据目录加载AB(使用协程不使用线程)
步骤5. 加载(和下载)AB的思路:
(1)建立一个队列,队列中有加载AB的请求时,去加载,加载完成后移出队列,加载下一个直到完成
(2)Unity5.0之后的AB资源是分开的,加载时难以判断依赖关系,而且AB资源在内存中只能有一个,所以使用单线程加载
步骤6. 实例化后卸载内存中的AB
uLuaFramework框架结构图
注意的点
(1)打包时根据每个文件起对应的AB名字,记录下MD5值和大小,保存为CSV文件(微软的东西确实好),好处是便于看也便于改
(2)由于StreamingAsset目录是只读的,不能将服务端下载的文件放到里面,创建数据目录
(3)开发用Resource加载,发布用LoadAB加载
(4)不同平台下数据目录地址不同:
Android、IOS:Application.persistentDataPath + "LuaFramework"
Mac OS、Windows:c:/LuaFramework/
Editor:Application.dataPath + "/StreamingAsset/"
Unity热更新相关概念
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。