unity学习中关于uLua的Unity+Lua热更新解决方案

unity学习中关于uLua的Unity+Lua热更新解决方案

ID:43325952

大小:44.08 KB

页数:4页

时间:2019-09-28

unity学习中关于uLua的Unity+Lua热更新解决方案_第1页
unity学习中关于uLua的Unity+Lua热更新解决方案_第2页
unity学习中关于uLua的Unity+Lua热更新解决方案_第3页
unity学习中关于uLua的Unity+Lua热更新解决方案_第4页
资源描述:

《unity学习中关于uLua的Unity+Lua热更新解决方案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、看lua的更新,以为真的跨平台没问题z就实验了安卓手机z然后就开始铺游戏框架”干了一星期到昨晚想起来到ipad上跑跑”然后我跟DEMO都一起崩溃了。今天搜索luajit,终于在U3D官方论坛终于发现了真正支持IOS+安卓(老外说web也支持,没测试)的插件,有些小兴奋,还是半信半疑的心态测试了下,果不其然运行在我的ipad2上至少我运行代码非常正常。免费给大家上传我测试过的工程z有问题一起硏究吧。补上:安卓也测试了游戏框架么问题,能正常使用的。今天在IOS上测试下更新的游戏框架了,问题不大。但是,发现一些地方需要注意下:(1)local

2、button二child(z,buttonName,z).gameObject:UTEvontListencr.Get(button).onClick二OnClick;这个事件关联代码在iOS下是报错的,不能够正确执行(安卓没事),但是我们通过Lua通知C#的添加方式,绕过了这个问题。文章来自【狗刨学习网】publicstaticvoidAddClick(GameObjectgo,objectlua){UIEventListener・Get(go)・onClick+二delegate(GameObjecto){Debug・Log(go.

3、name);Debug.Log(lua);LuaFunctionfunc二(LuaFunction)lua;func・Call();};}原因就是对于中文等双字节字符,string.Length的返回值是把一个汉字当—个计数的,这样底层的库去parser时候就等于没读完整啦〜这样一个简单的修改就可以让ulua支持中文了,在楼主给的包里修改出中文输入输出已测试通过。至于其他的读取接口比如读文件啥的貌似直接都用的bytes.Length,理论上没有问题的。当然,大前提是lua文件本身的编码要存成UTF8。(3)看到大家很多人开始使用ulua

4、,觉得自己辛苦没白费,当然ulua作者我也不认识,我就是想把新的插件介绍给大家使用,填补上u3d不能热更新的坑。希望大家把ulua还不是很好的地方跟想法报出来,有种贡献,将来你遇到问题了,别人才能也反过来帮你。lua里面是没有等待时间的,至少我比较笨,没有用lua的协同怎么实现等待时间,但是觉得应该可以。我就用lua通知c#等待一段时间后,再反过来调用lua协调的继续函数,来模拟。可能效率会不好,但是没别的想法,有办法的朋友贴上来,补在这后面也好。(4)关于有些网友问有了unilua,为啥还需要这个?我在这里回答下,别问了哈。unilu

5、a是云风团队阿南的作品,想必云大神的技术必然不会差了,尤其在运行效率下,但是Z关于怎么通过unilua调用附加在gameobject上的自定义c#脚步一直闹不明白,而且也跑到他们的开源地址问过了,阿南回答我说他也不清楚。有一个运行lua代码的入□的开发方式使用传统的开发模式应该可以,也就是说要全部用lua开发逻辑,目前我还没想到怎么弄,但是想必大家用ngui或者其他组件的人不少,比如我们的《Q灵三国》就是基于ngui开发的,假如修改一个uilabel的text的内容,就不知道怎么办了,即使你是用lua动态创建的文本框,你也改不了,除非你

6、完全不用ngui,而是用u3d的gui来做。ulua解决了我这个难题,导入一下使用的自定义类(导入类之前先载入命名空间duanet.load-assemblyCAssembly-CSharp')才可以的)上匕如下面的demo类,或者导入一些ngui的组件类(uilabel或者uisprite等),就能让我能顺利的走下去。所以才用ulua来开发。(5)kopilua跟ulua者0是用的luainterface所以基本上兼容可是kopilua没有提供错误堆栈跟踪,导致我们的前端跟我抱怨查错很麻烦,对于一个开发的中大型项目来说很累,也经常混淆

7、弄错的地方,ulua提供了错误堆栈跟踪,所以一出错就能看到在什么地方,出了什么问题,减轻了很多不必要的麻烦。(6)有朋友问怎么用NGUI实现动态界面,这个属于公司技术细节,我不好说太详细,说个大概的思路吧,看大家自由发挥,我们的也未必就是最好的技术解决方案。我们也就是用的Assetbundle,把每个面板Prefab跟与其相对应的lua脚本都打包成一个Assetbudle(相对应的NGUI的Atlas跟材质、纹理都会被打包进去,记得使用关联素材,否则你的资源会重复,而且很大,浪费玩家流量跟内存),然后使用了《Q灵三国》的动态更新系统代码

8、,把最新的面板资源下载到本地,从Assetbundle里面读取Prefab资源出来,然后上面附加一个公用的C#脚本,并且这个C#脚本会启动lua脚本,这样,每个面板都可以自动更新,附加在上面的lua脚本也能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。