【unity系统模块开发】热更
来源:互联网 发布:迅雷播放器 for mac 编辑:程序博客网 时间:2024/06/05 19:04
现在的手游项目如果没个热更新迭代根本跟不上, 特别是像我们项目做mmo的更是需要经常改动代码。
而现在的项目一般会选择用lua的方式实现热更新
不过我们项目由于历史原因没有使用,用的是另外一种方案
在项目里的所有GameObject都不挂脚本(NGUI脚本就通过代码的方式挂上),自己写的脚本都不继承Mono并打成dll,然后通过一个启动脚本去打开这些dll。
不过这样就有个问题,ios不能热更。。。
不管怎么样,先来讲讲这种方案要怎么做。
首先有两部分,一部分是打包,一部分是解包。
而包又分为资源包和代码包。
先讲打包
1.资源打包在之前写的另一篇文章有写到
http://blog.csdn.net/chrisfxs/article/details/55046339
2.代码打包
这个在之前也有说到
http://blog.csdn.net/chrisfxs/article/details/53213640
主要就是把代码全部打成dll,用TextAsset类型打开再打成assetBundle
然后是解包
1.资源解包
资源解包之前也是有讲
http://blog.csdn.net/chrisfxs/article/details/55046339
上面其实都有讲,其实主要就是想讲代码解包
2.代码解包
首先需要有一个脚本LoadingScript作为整个项目的初始化入口
在这个脚本的Awake里面去做各种配置,比如根据不同的平台获取不同的文件路径,播放cg、闪屏等
在Start函数里去设标志位开始初始化
在Update里开始按各种状态开始工作
1.下载脚本的AssetBundle
2.反射
TextAsset asset = www.assetBundle.LoadAsset<TextAsset>(fileName);Assembly assembly = Assembly.Load(asset.bytes);
3.获取脚本,创建主Mono,也就是游戏主逻辑入口,并挂在gameObject(这里我们是ClientMain)
Type script = assembly.GetType(scriptName);//这个是脚本名字,这里是ClientMaingameObject.AddComponent(script);
4.如果还有其他需要挂上的脚本就同样用这个方式挂上
接着所有逻辑就在ClientMain脚本的Start中展开。
- 【unity系统模块开发】热更
- unity-热更1
- Unity C#脚本热更
- 【unity系统模块开发】跑马灯
- unity+slua热更流程演示
- Unity 5.3 Assetbundle热更资源
- Unity 资源热更之AssetBundle
- 【unity系统模块开发】Unity Assetbundle打包笔记
- 【unity系统模块开发】unity网络层读写
- 【小松教你手游开发】【unity系统模块开发】Unity动画系统项目实战
- 【unity系统模块开发】u3d 层次问题总结
- 【unity系统模块开发】Unity5.5.2UI打包AssetBundle
- 【unity系统模块开发】自动寻路Navmesh
- Unity移动开发热更新问题
- unity热更- 2 游戏大版本更新和热更新
- Webpack 开发工具与模块热替换
- Unity资源热更之AssetBundle(1)———基本介绍
- Unity资源热更之AssetBundle(2)———旧版本AssetBundle
- openwrt下的网络设置过程
- <hadoop>文件操作
- python 通过pip安装第三方库
- React Native学习笔记(2)--React与JSX语法
- c++中“箭头(->)”和“点号(.)”操作符的区别 .
- 【unity系统模块开发】热更
- Repeater
- hadoop safemode----hadoop安全模式
- poj Invitation Cards(spfa)
- Appium 关于 appium 的原生控件的 xpath 定位问题及常用方法
- React Native]React Native组件之Navigator
- Android中Cursor类的概念和用法
- XCode调试时, 显示不出变量的值,po也出不来
- [编程题]汽水瓶