添加xLua到項目中和遇到的一些坑





1、添加xLua

  1. 在GitHub中下載騰訊xLua的最新版本

  2. 把Asset文件夾下的四個文件和Tools文件夾添加到項目中

  3. 在項目的Player Setting中添加宏 HOTFIX_ENABLE

  4. 把Unity安裝目錄下的3個dll文件加入剛才導入項目的xLua中
    導入dll文件
    F:\Unity\Editor\Data\Managed
    Unity.Cecil.dll
    Unity.Cecil.Mdb.dll
    Unity.Cecil.Pdb.dll
    導入到
    \Asset\XLua\Src\Editor\

  5. 點擊左上角Generate Code + Hotfix Inject In E 注入代碼

    如果成功顯示:

    則說明添加成功

[使用xLua時常見錯誤解答](https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/faq.md)

2、注意事項

  1. 在修改了任何一處C#代碼,都需要重新注入代碼。更改lua文件代碼則不需要。

  2. 在發布游戲時要把xLua自帶的Example例子刪除,然后 Clear+GC+HIIE 重新注入代碼

3、我遇見的一些坑即解決方法

  1. lua虛擬機的初始化和打補丁要放在Awake函數中,不然可能補丁無效。

  2. 通過 xlua.hotfix(class, method, func) 注入代碼,也要通過 xlua.hotfix(class, method, nil) 再刪除掉。
    注意要在lua虛擬機釋放之前完成(釋放方法在OnDestroy中,則刪除方法可以放在OnDestroy周期前面的OnDisable中)。

  3. lua代碼沒有問題,但在打包AssetBundles的時候報錯:

Assets/XLua/Gen/UnityEngineLightWrap.cs(614,59): error CS1061: Type `UnityEngine.Light' does not contain a definition for `lightmapBakeType' and no extension method `lightmapBakeType' of type `UnityEngine.Light' could be found. Are you missing an assembly reference?

解決:找到xLua文件里的 ExampleGenConfig.cs 文件
把代碼:

new List<string>(){"UnityEngine.Light", "lightmapBakeType"},

添加到黑名單中
效果如圖:

  1. 自定義loader從本地加載文件時是使用utf8讀取的,所以要注意文本的編碼格式要為utf8,不然可能出問題。
System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM