ILRuntime使用筆記


如果ILRuntime使用時性能有問題,需要確認以下幾點:

1.發包前是否做了自動分析CLR綁定

2.是否注冊了值類型綁定

3.熱更DLL是否為release模式編譯

4.發包前是否關閉了Development build

5.編輯器下是否定義了DISABLE_ILRUNTIME_DEBUG

 

注意事項

1. 一般嵌套task或者foreach里多次await容易出現代碼執行不到

2. struct在ILRuntime里,如果作為類成員變量,性能比class更低

3. struct不能雙層嵌套(值類型在VM里裝箱,雙層嵌套要兩層尋址,目前無法兩層尋址)

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

5. 熱更里的委托不是真的委托類型,沒辦法通過Delegate.CreateDelegate創建

6. 直接跟內存和操作系統交互的東西都沒法在熱更里弄,需要在主工程做這種事情

7. ref out關鍵字謹慎使用,比如傳遞ref/out 靜態變量時會報錯

8. 協程無法使用字符串啟動,只支持參數為IEnumerator類型的方式啟動或停止協程

 

建議

1. 在熱更代碼中不建議繼承MonoBehaviour

2. 盡可能避免使用特性(Attribute),反射(Reflection)

 

ILRuntime不支持Attribute的繼承操作

1. 子類不會繼承基類的屬性標簽,所以熱更工程中子類也要有標簽

2. Attribute自身的繼承

 
參考:https://blog.csdn.net/Chen_Fen/article/details/115668780

參考:https://www.lfzxb.top/et-6-with-ilruntime/

參考:https://www.dazhuanlan.com/magicshui/topics/1567053


免責聲明!

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



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