前段時間看了一下unity加載dll庫的相關東西,正好看到一遍文章,看完後也總結了一下也寫了代碼。
項目是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))]無效,所以不能使用。
這也是文章裏提到的遇到的一些坑。
既然有這麼坑換dll,我參與的unity項目裏也都一致的更換了ulua,lua代碼靈活性高,現在又有專門的IDE,可以打斷點哦,這tm對於調試腳本語言來說就是一個福利啊,所以更換DLL的做法感覺有點過時了,當然是針對中國市場,我一直以來很看好lua這個語言,無論從我做2d還是3d都用過。
我雖然做遊戲年頭並不是特別長,但是我覺得針對前端開發者來說,吃透一門強類型語言和一門腳本是必須的,還有針對手遊的前端,吃透一個移動平臺也是必須的,比如安卓或者ios。