iso 支持 ulua 热跟新吗

uLua最新的Unity+Lua热更新解决方案!!
我的图书馆
uLua最新的Unity+Lua热更新解决方案!!
/thread-.html看lua的更新,以为真的跨平台没,就实验了安卓手机,然后就开始铺游戏框架,干了一星期到昨晚想起来到ipad上跑跑,然后我跟DEMO都一起崩溃了。今天搜索luajit,终于在官方论坛终于发现了真正支持IOS+安卓(老外说web也支持,没测试)的插件,有些小兴奋,还是半信半疑的心态测试了下,果不其然运行在我的ipad2上面了,至少我运行代码非常正常。免费给大家上传我测试过的工程,有问题一起研究吧。补上:安卓也测试了游戏框架么问题,能正常使用的。今天在IOS上测试下更新的游戏框架了,问题不大。&但是,发现一些地方需要注意下:&(1)&[C#]&纯文本查看&复制代码&1local button = child("buttonName").gameO UIEventListener.Get(button).onClick = OnC这个事件关联代码在iOS下是报错的,不能够正确执行(安卓没事),但是我们通过Lua通知C#的添加方式,绕过了这个问题。&[C#]&纯文本查看&复制代码&1234567public static void AddClick(GameObject go,object lua){ &&UIEventListener.Get(go).onClick += delegate(GameObject o){ &&Debug.Log(go.name); &&Debug.Log(lua); &&LuaFunction func = (LuaFunction) &&func.Call(); &&}; }PS:非常感谢chiuan同学的上述代码贡献!!!!&(2)刚才发现一个有关注释的问题,也一并记录下。Lua代码与注释不用同行,否则lua执行会出错,估计跟中文注释有关系。我们的做法是,最终打包之前把所有txt里面的单独行注释铲除掉,即可运行正常了。(如果你的lua代码有中文,打包之前千万删除掉,今天我们测试print里面也不能有中文)&非常感谢cnlas同学搞定了中文编码的解决办法呢,非常棒!~,以下是解决方案(借花献佛啦):&Lua.cs Line159&if (LuaDLL.luaL_loadbuffer(L, chunk, chunk.Length, name) != 0)&改为&if (LuaDLL.luaL_loadbuffer(L, chunk, System.Text.Encoding.UTF8.GetByteCount (chunk), name) != 0)&Line 225&if (LuaDLL.luaL_loadbuffer(L, chunk, chunk.Length, chunkName) == 0)&改为&if (LuaDLL.luaL_loadbuffer(L, chunk, System.Text.Encoding.UTF8.GetByteCount (chunk), chunkName) == 0)&原因就是对于中文等双字节字符,string.Length的返回值是把一个汉字当一个计数的,这样底层的库去parser时候就等于没读完整啦~&这样一个简单的修改就可以让ulua支持中文了,在楼主给的包里修改出中文输入输出已测试通过。 至于其他的读取接口比如读文件啥的貌似直接都用的bytes.Length,理论上没有问题的。 当然,大前提是lua文件本身的编码要存成UTF8。&(3)看到大家很多人开始使用ulua,觉得自己辛苦没白费,当然ulua作者我也不认识,我就是想把新的插件介绍给大家使用,填补上u3d不能热更新的坑。希望大家把ulua还不是很好的地方跟想法报出来,有种贡献,将来你遇到问题了,别人才能也反过来帮你。lua里面是没有等待时间的,至少我比较笨,没有用lua的协同怎么实现等待时间,但是觉得应该可以。我就用lua通知c#等待一段时间后,再反过来调用lua协调的继续函数,来模拟。可能效率会不好,但是没别的想法,有办法的朋友贴上来,补在这后面也好。&(4)关于有些网友问有了unilua,为啥还需要这个?我在这里回答下,别问了哈。unilua是云风团队阿南的作品,想必云大神的技术必然不会差了,尤其在运行效率下,但是,关于怎么通过unilua调用附加在gameobject上的自定义c#脚步一直闹不明白,而且也跑到他们的开源地址问过了,阿南回答我说他也不清楚。有一个运行lua代码的入口的开发方式使用传统的开发模式应该可以,也就是说要全部用lua开发逻辑,目前我还没想到怎么弄,但是想必大家用ngui或者其他组件的人不少,比如我们的《Q灵三国》就是基于ngui开发的,假如修改一个uilabel的text的内容,就不知道怎么办了,即使你是用lua动态创建的文本框,你也改不了,除非你完全不用ngui,而是用u3d的gui来做。ulua解决了我这个难题,导入一下使用的自定义类(导入类之前先载入命名空间:luanet.load_assembly('Assembly-CSharp')才可以的),比如下面的demo类,或者导入一些ngui的组件类(uilabel或者uisprite等),就能让我能顺利的走下去。所以才用ulua来开发。&(5)kopilua跟ulua都是用的luainterface,所以基本上兼容,可是kopilua没有提供错误堆栈跟踪,导致我们的前端跟我抱怨查错很麻烦,对于一个开发的中大型项目来说很累,也经常混淆弄错的地方,ulua提供了错误堆栈跟踪,所以一出错就能看到在什么地方,出了什么问题,减轻了很多不必要的麻烦。&(6)有朋友问怎么用NGUI实现动态界面,这个属于公司技术细节,我不好说太详细,说个大概的思路吧,看大家自由发挥,我们的也未必就是最好的技术解决方案。我们也就是用的Assetbundle,把每个面板Prefab跟与其相对应的lua脚本都打包成一个Assetbudle(相对应的NGUI的Atlas跟材质、纹理都会被打包进去,记得使用关联素材,否则你的资源会重复,而且很大,浪费玩家流量跟内存),然后使用了《Q灵三国》的动态更新系统代码,把最新的面板资源下载到本地,从Assetbundle里面读取Prefab资源出来,然后上面附加一个公用的C#脚本,并且这个C#脚本会启动lua脚本,这样,每个面板都可以自动更新,附加在上面的lua脚本也能动态更新,即可实现对UI的控制。&(7)其实有个很简单的require的替代方案:把lua代码打包进Assetbundle里面的吧,那好,可以在面板的c#桥里面写个函数,就2行代码即可完成了,比如:&[C#]&纯文本查看&复制代码&123void RequireLua(string name) { &&TextAsset luaCode = bundle.Load(name, typeof(TextAsset)) as TextA &&lua.DoString(luaCode.text); }每次Lua代码里面需要其他lua,RequireLua('lua2.lua'),然后就可以调用了。这样lua2.lua照样可以动态更新!&(8)EntryPointNotFoundException: luaL_newstate错误,记得切换完平台,重新启动下U3D,即可。&(9)关于性能评测,请参考帖子http://blog.csdn.net/chiuan/article/details/(10)实例下载:/s/1pJAZm0z&有兴趣可以加入&Lua技术交流群
大家可以互相交流&,&&(62.66 KB, 下载次数: 21)&(62.94 KB, 下载次数: 20)
TA的最新馆藏[转]&[转]&[转]&[转]&ulua - unity效率最高、最完善的热更新方案!!
uLuaQQ 群:
& [招聘]ulua/tolua社区招聘服务站开启!!!
为了社区同学招聘、找工作需求,将此类事物独立到“七之猫”网站
& [推荐]基于tolua #的Lua热更新UGUI/NGUI版框架发布!!!
LuaFramework是基于SimpleFramework + tolua #基础上,重新构造的新框架~
框架自带了LuaBundle模式(直接讲lua文件打进Assetbundle)+ 重构的资源管理器
-----------------------------------------------------------------
& [推荐]ulua第三代超级热更新方案tolua #发布!!!
-----------------------------------------------------------------
& [原创]ulua+tolua学习资料汇总
-----------------------------------------------------------------
& [原创]uLua/cstolua使用基础!
-----------------------------------------------------------------
& [原创]SimpleFramework NGUI/UGUI基础知识!
-----------------------------------------------------------------
& uLua & Simple Framework 视频教程地址
-----------------------------------------------------------------
& Simple Framework Github地址
-----------------------------------------------------------------
Supported Platforms: , ,
取自slua测试脚本,取各自最新版。略...
真实的数据(单位:秒)
0.2&&&&: 0.26
0.3&&&&: 0.93
0&&&&&&&: 0.15
2&&&&&&&:
0.45&&: 0.62
另外附上使用slua的朋友的测试结果:
slua成绩:
属性的读取和设置 cost time:0.01
成员方法的调用 cost time:0.994
静态方法调用 cost time: 0.179
纯属性设置 cost time: 0.99
构造valuetype i,i,i 20万次 cost time: 0.99
构造valuetype i,i,i 200万次 cost time: 1.387
构造valuetype 1,1,1 20万次 cost time: 0.131
构造valuetype 1,1,1 200万次 cost time: 1.313
cstolua成绩:
属性的读取和设置20万次 cost time:0.02
成员方法的调用20万次 cost time:0
静态方法调用20万次 cost time: 0
纯属性设置20万次 cost time: 0.98
构造valuetype i,i,i 20万次 cost time: 0.963
构造valuetype i,i,i 200万次 cost time: 0.02
构造valuetype 1,1,1 20万次 cost time: 0
构造valuetype 1,1,1 200万次 cost time: 0.0095
ulua/cstolua全面领先slua,这才是真实数据!
-----------------------------------------------------------------
& uLua编译工程+源代码 Release!!! &
Supported Platforms: , , , ,
Unity平台速度最快、最稳定的uLua编译工程+源代码已经全部分享下载。
---------------------------------------------------------------------------------------------
& SimpleFramework_UGUI v0.4.1 Release!!!(基于uLua uGui平台)&
Supported Platforms: , , , ,
SimpleFramework_UGUI是一个基于unity+ulua+SimpleFramework技术的免费开源UGUI移植版游戏框架。
---------------------------------------------------------------------------------------------
& SimpleFramework_WP v0.1.1 Release!!!(基于NLua WinPhone平台)&
Supported Platforms:
SimpleFramework_WP是一个基于unity+nlua+SimpleFramework技术的免费开源WinPhone移植版游戏框架。
---------------------------------------------------------------------------------------------
& Simple Framework_NGUI v0.4.1 Release!!!&
Supported Platforms: , , , ,
Simple Framework是一个基于unity+ulua+tolua c#技术的NGUI免费开源迷你游戏框架。
---------------------------------------------------------------------------------------------
请直接下载,集成cstolua、protobuf-lua-gen、ios64、Intel x86, cjson, pbc, lpeg, sqlite3、sproto、ios 32/64 bit统一luac编码、动态加载c#wrap等支持,从网络协议到正则表达式,再到数据库,ulua已经为在unity lua环境开发集成了一个既兼顾效率(都是成熟的原生C的库)又完善(一应俱全)的稳定开发平台,使您开发从小游戏到大型网游都有相应的方案支持!!其他版本请ulua - unity效率最高、最完善的热更新方案!!
uLuaQQ 群:
& Developing:
Release Note:
本工程基于Unity 5.0/4.6.4 + NGUI 3.8.2 + uLua 1.1.0 + cstolua构建
服务器端基于VS2012及其以上版本。
支持平台:PC/MAC/Android(armv7-a + Intel x86)/iOS(armv7 + arm64)/
WP8(SimpleFramework_WP_v0.1.1 (nlua))/
UGUI版本:SimpleFramework_UGUI_v0.2.8
//--------------------------
(1)集成cstolua 1.9.6。
(2)luajit升级为2.0.4,ulua底层库随cstolua更新。
(3)NGUI升级为3.8.2。
(4)ICSharpCode.SharpZLib更新为“夜莺”的il2cpp无错版。
(5)删除ulua/Source目录(压缩了),防止在xcode编译需要lua.h。
(6)dofile没有文件崩溃。
(7)添加框架命名空间。
(8)添加Wrap忽略函数列表。
(9)修复了MessagePanel逻辑。
(10)network.lua使用Event监听
//--------------------------
(1)集成了tolua #1.9.1。
//--------------------------
(1)集成了tolua #1.8.9,修复了协成问题。
(2)增加最新文档。
//--------------------------
(1)为了兼容il2cpp跟效率,去掉了C#版的sqliteKit。
(2)添加了C版的SQLite3底层库,并且在game.lua添加了示例代码。
(3)更新到tolua c# 1.8.5
(4)添加了lpeg的底层库,并在game.lua添加了示例代码。
//--------------------------
(1)在BaseLua.cs添加设置transform\gameObject对象到Lua。
(2)添加了2个Examples(lua枚举+lua类继承)。
//--------------------------
(1)增加了PBC\PB-Lua\cjson的示例代码,具体参考lua/logic/game.lua和LuaHelper.cs,
帮所有同学把底层库跟上层lua、c#无缝连接起来,降低了开发门槛。
PS:安卓平台需要有存储卡写权限,否则失败。
//----------------------------
(1)uLua底层支持了lua-cjson库。
(2)Const.cs类增加了对各个库的开关。
(3)修复了ulua 7个例子。
//----------------------------
(1)uLua底层库支持云风的pbc协议库。
(2)资源管理部分增加了简单的增量更新功能。
//----------------------------
(1)修复了GUI的预制物体损坏。
(2)Intel atom x86模式替换成luajit库。
(3)兼容Unity4.6.x与Unity5版本。
//----------------------------
(1)去掉了nlua模式,WP平台单独开出一个分支SimpleFramework_WP。
(2)ulua安卓底层库新支持了Intel atom x86模式。
(3)支持了Unity5.0开发环境(由于NGUI兼容性问题,不支持U5新打包格式)。
(4)修复了MAC OSX模式下因为ulua.bundle未更新运行崩溃的问题。
(5)修复了自带Server不能与框架通信的BUG。
//----------------------------
(1)添加nlua兼容模式,可选择ulua模式或nlua模式。
//----------------------------
(1)添加了ios armv7s arm64平台支持。
(2)luajit使用了最新版本2.1。
(3)修复了iPhone5s以上设备不能直接运行的路径bug。
//----------------------------
(1)增加了简单的解包功能。
(2)直接运行到真机(安卓+ios),而不在需要copy资源到真机存储卡。
//----------------------------
(1)集成最新版tolua c# 1.7.2版,修复某些生成Wrap类错误BUG。
(2)修复了手动copy到ios真机上FileStream读取权限失败的BUG。
(3)清除函数缓存增加了删除Wrap文件缓存功能。
//----------------------------
(1)集成最新版tolua c# 1.7.1版
//----------------------------
(1)添加的可加密的sqlite功能的工具
(2)添加了sqlitekit函数库。
(3)删除了LuaWrap在U3D4.6版本之前老版本打开错误提示问题。
(4)添加了Debuger.dll,以后可使用Debuger.DebugXXX函数,而不会跳转到其函数体内。
//----------------------------
(1)集成tolua c# 2.03版本
(2)增加了Class.lua自定义类
(3)修改了tolua c#中生成自定义类与U3D类合并函数
//----------------------------
(1)集成tolua c# 1.2版本
//----------------------------
(1)添加了一个基于supersocket的服务器端框架。
(2)集成了网络模块,并且通过lua发送消息给,返回echo流程已完成。
服务器框架程序:SimpleFramework\Server\Server\bin\Debug\SuperSocket.SocketService.exe
服务器配置文件:同上目录\SuperSocket.SocketService.exe.config
PS:运行服务器程序,需要.Net(windows)/Mono(linux) 4.0以上版本
//----------------------------
(1)集成了UIWrapGrid.cs,100个滚动列表项不卡(亲测2000不卡)。
(2)因同学需求,添加了弹出面板。
//----------------------------
(1)集成了阿萌的tolua c#版插件.
(2)集成了UnityVS调试插件。unity学习中关于uLua最新的Unity+Lua热更新解决方案-360文档中心
360文档中心免费免积分下载,各行业
知识、技术、信息等word文档下载网站
unity学习中关于uLua最新的Unity+Lua热更新解决方案
关于unity学习中关于uLua最新的Unity+Lua热更新解决方案看lua的更新,以为真的跨平台没问题,就实验了安卓手机,然后就开始铺游戏框架,干了一星期到昨晚想起来到ipad上跑跑,然后我跟DEMO都一起崩溃了。今天搜索luajit,终于在U3D官方论坛终于发现了真正支持IOS+安卓(老外说web也支持,没测试)的插件,有些小兴奋,还是半信半疑的心态测试了下,果不其然运行在我的ipad2上面了,至少我运行代码非常正常。免费给大家上传我测试过的工程,有问题一起研究吧。补上:安卓也测试了游戏框架么问题,能正常使用的。今天在IOS上测试下更新的游戏框架了,问题不大。
但是,发现一些地方需要注意下:
这个事件关联代码在iOS
下是报错的,不能够正确执行(安卓没事),但是我们通过Lua通知C#的添加方式,绕过了这个问题。文章
免费下载该文档:
unity学习中关于uLua最新的Unity+Lua热更新解决方案的相关文档搜索
那么对于Unity3D而言,什么是热更新呢?如果我们最终发布的Unity3D游戏是一个Web游戏,那么每次游戏加载的过程中实现对资源代码的更新就是热更新。...Unity3D热更新技术-脚本(五) NGUI脚本使用_计算机软件...接着创建一个新场景,在场景中创建边界,如效果图中...是网友发布的 Unity3D 学习文章,如 果有什么内容...}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信