前言 IOS不能热更新,不是因为不能用反射,是因为 System.Reflection.Assembly.Load 无法使用 System.Reflection.Emit 无法使用 System.CodeDom.Compiler 无法使用 这三个不能用,就把传统dotnet动态路径坑死了 为啥“这三个不能用,就把传统dotnet动态路径坑死了”呢 动态载入dll或者cs的方法就这几个, IOS 下不能动态载入dll或者cs 文件,已经编译进去的没事。 ========================================================= 尽量只把U3D当一个渲染引擎来看待, 不然你会发现热更资源很悲剧, 资源一定要与逻辑分开, 因为U3D用的是类的序列化, 后期改动会导致前面导出的资源不能用。就和开发AS3游戏差不多了。可以这么理解 1.prefab尽量不去绑定脚本,尽量在代码里AddComponent<接口实现脚本>,在实例prefab的GetComponent<接口脚本>.接口操作。 2.prefab可以绑定那些不会再改动的脚本。 ============================================================ 插件下载地址: http:/// toLua下载地址: https://github.com/topameng/CsToLua 阿萌对ULUA1.03的BUG修改文章: http://user.qzone.qq.com/5281069/blog/1408526450?ptlang=2052&ADUIN=522414019&ADSESSION=1425950543&ADTAG=CLIENT.QQ.5396_.0&ADPUBNO=26442 蛮牛上找的关于ULUA的文章: Unity中使用ulua的个人经验总结
http://www./blog-27966-2568.html?_dsign=0c1fb317 ==============写LUA相关的工具?============== BabeLua-vs2012-and-vs2013插件: 设置参考http://www./bbs/read.php?tid=205043 使用技巧http://blog.csdn.net/babestudio LuaStudio,请使用Administrator管理员权限,否则会挂死!!!?
==============uLua插件导入到unity3d常见问题?==============? 导入uLua插件运行自带的例子报错问题:DllNotFoundException: 这个在其老外写的README里已经说了如何解决。 (1)将plugins目录放到最外面,重启unity。 (2)真机没有打包libulua.so进包导致,或者模拟器也有些设置不对。打包的时候把libulua.so打包进libs\armeabi-v7a EntryPointNotFoundExcept
EntryPointNotFoundExcept 0.16框架报错解决办法: 0.16框架基于u3d4.6,所以在老版本的u3d打开会报错,如果是老版本的话把LuaWrap除了Base目录外所有的Wrap cs文件删掉,然后lua clear菜单调用下就好了。
uaScriptException: [string "define.lua"]:1: attempt to index global 'UnityEngine' (a nil value)解决:生成wrap文件。 tolua 打开Editor/BindLua.cs文件,在static BindType[] binds = new BindType[]变量末尾一行加入要导入的cs类,比如Resources类,保存等u3d编译完后,选择“Lua/Gen LuaBinding Files”编译即可,以后就可以在lua里面使用此类了,而不要导入进来。映射public成员 C#里面有个编辑器工具类可以用Wrap映射到lua里使用
lua脚本里在定义基础类型的时候 _lua_tocbuff 是阿萌自己添加的,用于xml lua的loop库可以正常用在ulua里吗 自己直接拿lua5.1源码编的ulua.dll 加上这个_GT(typeof(JsonObject)), 点击GEN LUA
WRAPPER后unity直接就崩溃了 最后发布程序的时候,会包很多错,是由于TOLUA无法识别代码中加了编辑器运行的条件编译判断,所以手动注释掉与这相关的代码不报错就好,就能正常编译打包程序了。 如何在LUA中遍历CSharp的数组:
}
LuaVariable
核心思想就是把你C#数组里面的东西,放入table,如果是单纯的数据类型,你可以直接lua里面for 比如我这里:
通过TOLUA,把Collider2d类型注册给ULUA,直接lua里面for 再贴上ULUA群主写的范例: 在lua里怎么遍历 C#的object数组: uLua自带的案例 2015年3月26日 15:58:22 补充说明,升级到U3D5.0.0F4,U3D
API改了很多,都得用getcomponent函数,以前直接THIS.transform已经不能用了,所以自带的小案例会报错。 02_CreateGameObject?: 这里我先写个最平常不过的U3D下的C#脚本? =======================ExtendMonoScript?.cs================ public class ExtendMonoScript : MonoBehaviour {
} public void aaa ( ) {
public private void PrivateObjMethod ( )
{ } =======================ExtendMonoScript?.cs================ =======================CreateGameObject.cs=============== using UnityEngine; load_assembly加载程序集,这样LUA才能使用其API import_type导入类型,这样LUA才能使用改类型 newGameObj:AddComponent('ExtendMonoScript')这里注意初学LUA,“:”与“.”的区别 DoString(script);真正使用ULUA插件时不要用这个,因为效率低下。 03_AccessingLuaVariables: ========================AccessingLuaVariables.cs========================== using UnityEngine; |