[]LayaAir UnityPlugin反编译和BoxCollider的Bug修复
反编译
使用JetBrain的ReSharper或dotPeek反编译LayaAir3D/LayaTool/LayaAirLibrary.dll
将dll中的4个cs文件的代码复制粘贴到新文件中。
(JSONObject反编译后问题较多,所以我没有做成源代码,大家可以自行尝试。)
此时,往往编译不通过。找到报错的地方,会发现有很多反编译不成功的代码。
例如:
手动改成
其他错误往往类似。
通篇改一遍,大约10分钟可以完成。(不同的反编译工具生成的代码略微不同,有的错误更多,需要用正则表达式自动化替换。试过.NetReflector,问题非常多。ILSpy还没有试过。)
将源码放在Unity工程里。
修改BUG
之所以要反编译这个导出工具,是因为它有个严重的bug——BoxCollider导出时center.x属性没有加负号!
我们知道Laya和Unity的x轴是反的,所以在导出Transform组件的position时,程序员添加了* -1:
然而在导出BoxCollider组件时,没有* -1。找到public static void getBoxColliderComponentData(GameObject gameObject, JSONObject component)方法:
所以我们要修复这个bug。很简单,加一个负号即可:
这个时候,Unity工程里有LayaAirLibrary.dll和它的源码。Unity在Import新的文件后,发现了两份代码的冲突,却很体贴地帮我们选择了执行源码,忽略dll。可以从如下Warning中看到。
当我们运行LayaAir Export时,执行的则是我们修改过的源码。因为JSONObject没有源码,所以我必须将dll保留在工程里,而这样就可以按我们的需求编译通过了,实属幸运。如果要证明我们运行的是源码,可以在DataManager.cs的public static void getData()方法开头加一行log。
如果有朋友没有看到如图的Warning,且执行的还是dll,可以让Unity重新导入dll,例如直接点击Re-import,或者将dll移除去→编译→再移回来→编译,或者将dll的Import Settings里的√去掉→Apply→再点上→再Apply。
使用JetBrain的ReSharper或dotPeek反编译LayaAir3D/LayaTool/LayaAirLibrary.dll
将dll中的4个cs文件的代码复制粘贴到新文件中。
(JSONObject反编译后问题较多,所以我没有做成源代码,大家可以自行尝试。)
此时,往往编译不通过。找到报错的地方,会发现有很多反编译不成功的代码。
例如:
手动改成
其他错误往往类似。
通篇改一遍,大约10分钟可以完成。(不同的反编译工具生成的代码略微不同,有的错误更多,需要用正则表达式自动化替换。试过.NetReflector,问题非常多。ILSpy还没有试过。)
将源码放在Unity工程里。
修改BUG
之所以要反编译这个导出工具,是因为它有个严重的bug——BoxCollider导出时center.x属性没有加负号!
我们知道Laya和Unity的x轴是反的,所以在导出Transform组件的position时,程序员添加了* -1:
然而在导出BoxCollider组件时,没有* -1。找到public static void getBoxColliderComponentData(GameObject gameObject, JSONObject component)方法:
所以我们要修复这个bug。很简单,加一个负号即可:
这个时候,Unity工程里有LayaAirLibrary.dll和它的源码。Unity在Import新的文件后,发现了两份代码的冲突,却很体贴地帮我们选择了执行源码,忽略dll。可以从如下Warning中看到。
当我们运行LayaAir Export时,执行的则是我们修改过的源码。因为JSONObject没有源码,所以我必须将dll保留在工程里,而这样就可以按我们的需求编译通过了,实属幸运。如果要证明我们运行的是源码,可以在DataManager.cs的public static void getData()方法开头加一行log。
如果有朋友没有看到如图的Warning,且执行的还是dll,可以让Unity重新导入dll,例如直接点击Re-import,或者将dll移除去→编译→再移回来→编译,或者将dll的Import Settings里的√去掉→Apply→再点上→再Apply。
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
Laya_XS
赞同来自:
158*****076
赞同来自: