ILRunTime熱更新使用細節匯總(持續更新)


0.官方的注意事項

1.不要用nullable

2.盡量不要用foreach,原理限制,有gc。一般嵌套task或者foreach里多次await容易出現代碼執行不到的情況

3.不要用struct,struct在ILRuntime里,如果作為成員變量,性能比class更低。struct不能雙層嵌套(值類型在VM里裝箱,雙層嵌套要兩層尋址,目前無法兩層尋址)

4.熱更里try catch的話,需要取ex.Data["StackTrace"]和ex.Data["Message"]

5.別人的細節匯總,其中有些說法錯誤:

注意!!!第3條是錯誤的,只要把你要多線程同時執行的類型或方法預熱了,然后就可以隨便多線程了

6.顯式實現 和 隱式實現的方法同名時,會執行隱式實現的方法

7.使用ILRuntime遇到的一些問題 - 知乎 (zhihu.com)

8.啟動和關閉協程放在主工程中,參照官方demo

9.發布時在ProjectSetting添加宏DISABLE_ILRUNTIME_DEBUG,可屏蔽來自ILRunTime的Log

10.熱更層中掛在gameObject的繼承MonoBehaviour的腳本上有動畫關鍵幀事件可在MonoBehaviour適配器上添加相應的適配方法

11.若有多個熱更dll,可只用一個Appdomain,只需用命名空間將多個dll生成的clr綁定區分即可

12.ILRunTime熱更層斷點注意事項:

 13.用asmdef自動生成的熱更項目文件。

最后還要刪除一個xml設置字段,要不然不能用vs編譯。

14.int[,]  float[,] byte[,]這些可以是可以用的,非基礎類型的二維數組不支持,比如Vector2[,]不可以

15.熱更工程需要斷點時,可以先startservice 然后加載 dll 和pdb ,startservice可以用編輯器擴展執行,只要保證Appdmain和運行unity時的是同一個就行

16.sdk類標個[Perserve],打上這個既不會生產冗余綁定撐大內存,也不會被剪裁掉 以備不時之需


免責聲明!

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



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