APK包裝到用戶手機上后,代碼如何更新,總不能全用LUA吧?特別是代碼非常多的戰斗手游
昨晚上有了dll 熱更新的想法,今天做了一天的實驗,也遇到些坑,這里總結下
工作環境: U3D5.3.2 + vs2010 +mono
下面要模擬的是一個登陸環境,點擊按鈕,就加載一個iGameObjec的Item, Item 上得到更新的文本內容。具體如下圖
1> 程序集管理
2> Dll管理與加載
3> 邏輯代碼和UI的實現
4> 打包dll+打包Assetbundle
限制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))]無效,所以不能使用。