眾所周知,BDF代碼熱更使用的是ILRuntime,燃鵝ILR中使用AddComponent需要先搞一個MonoBehavior的Adaptor,然后再CLR重定向劫持一下AddComponent才可以。
雖然很麻煩但是BDF作者已經(jīng)幫我們搞定了,Adaptor已經(jīng)有了,CLR重定向在編譯hotfix.dll的時候會自動生成。
MonoAdaptor在
Assets/Code/Game/ILRuntime/Adapter/Manual/MonoBehaviourAdapter.cs
AddComponent在
Assets/Code/Game/ILRuntime/Binding/Analysis/UnityEngine_GameObject_Binding.cs
如果沒有AddComponent相關(guān)的CLR重定向代碼,需要在熱更中調(diào)用一下Addcomponent然后編譯一下hotfix.dll就有了。
如果調(diào)用AddComponent報空引用,需要把config中的code mode改成反射模型,ILR模式會報空引用。
盡量不要在熱更中調(diào)用mono,因為泡哥說:
全局除了UI組件之外,不允許任何腳本繼承MonoBehavior.