Unity热更新相关概念
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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等)
热更新流程
步骤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热更新相关概念的主要内容,如果未能解决你的问题,请参考以下文章
Unity 之 Addressable可寻址系统 -- 资源热更新