Unity3D的坑系列 動態載入dll

2021-07-25 18:12:30 字數 792 閱讀 2327

**:

我現在參與的專案是做mmo手遊,目標平台是android和ios,ios平台不能動態載入dll(什麼原因找賈伯斯去),可以直接忽略,而在android平台是可以動態載入dll的,有了這個就可以實現**更新,不過實際上,在unity裡要用上動態載入dll是有很多限制的(不了解的話就是坑)。

限制1:在android手機裡動態載入dll不能使用assembly.loadfile(string path),只能使用assembly.load(byte rawassembly)這個介面,所以要自己想辦法先讀出來。

限制2:動態載入的指令碼不能在編輯器裡掛在prefab上。

限制3:如果指令碼在動態dll裡,呼叫addcomponent()掛此指令碼上prefab上時不能使用addcomponent(「somescript」)的方式呼叫,要用addcomponent(type.gettype(「somescript」))。

限制4:在動態dll裡使用[requirecomponent(typeof(somescript))]無效,所以不能使用。

我目前主要就是遇到這些坑,以後有什麼新發現再進行補充。

修正&補充:在ios下不是都不能動態載入dll,越獄的手機可以實現,具體可參考文章:親測沒問題。

再次修正:ios實際上還是不能實現真正的**熱更新,使用上述方法只能呼叫外部dll的介面,但執行邏輯還是在native code裡面。簡單的說,之前我測試的時候是專案裡面有a.dll的**,然後再assembly.load a.dll進來,呼叫a.dll裡面的方法是可以的,但實際是呼叫了專案裡的**,如果專案裡沒有a.dll的**,呼叫會報錯,以上。

Unity3D的坑系列 動態載入dll

我現在參與的專案是做mmo手遊,目標平台是android和ios,ios平台不能動態載入dll 什麼原因找賈伯斯去 可以直接忽略,而在android平台是可以動態載入dll的,有了這個就可以實現 更新,不過實際上,在unity裡要用上動態載入dll是有很多限制的 不了解的話就是坑 限制1 在andr...

Unity3D的坑系列 動態載入dll

unity3d的坑系列 動態載入dll 我現在參與的專案是做mmo手遊,目標平台是android和ios,ios平台不能動態載入dll 什麼原因找賈伯斯去 可以直接忽略,而在android平台是可以動態載入dll的,有了這個就可以實現 更新,不過實際上,在unity裡要用上動態載入dll是有很多限制...

Unity3D的坑系列 動態載入dll

我現在參與的專案是做mmo手遊,目標平台是android和ios,ios平台不能動態載入dll 什麼原因找賈伯斯去 可以直接忽略,而在android平台是可以動態載入dll的,有了這個就可以實現 更新,不過實際上,在unity裡要用上動態載入dll是有很多限制的 不了解的話就是坑 限制1 在andr...