topameng / tolua

The fastest unity lua binding solution
MIT License
3.01k stars 874 forks source link

Injection功能在Unity2019打包之后不生效问题 #247

Open chenguangcc opened 2 years ago

chenguangcc commented 2 years ago

Unity升级到2019.4.10f1之后, Injection功能在Editor状态生效,打PC包和安卓包之后不生效 查找到原因: Unity2019版本在打包之后会在library目录下生成PlayerScriptAssemblies临时目录存放原来ScriptAssemblies下的dll,导致Injection不生效 尝试修改: 1.将Inject路径修改为PlayerScriptAssemblies,不生效 2.InjectAll之后调用EditorUtility.RequestScriptReload(),Inject成功了但是包体闪退了,反编译dll之后查看发现打包之后生成的方法体和Editor下生成的不一样,会有一个Discarded unreachable code的提示,还有一些Error导致闪退; 1

xLua也有同样的问题 https://github.com/Tencent/xLua/issues/691 https://github.com/Tencent/xLua/issues/732 https://github.com/Tamsiree/xLua/commit/799a4fe88e60d2b1d11e10a2911c0c21898e4d9e https://github.com/Tencent/InjectFix/issues/331

stzb321 commented 2 years ago

2019后自行实现IPostBuildPlayerScriptDLLs 接口,在OnPostBuildPlayerScriptDLLs回调里面inject实际平台的dll