① 如何防止Unity3D代碼被反編譯
Virbox Protector對Unity3d程序的dll直接進行加殼後,無需手動編譯mono,能防止反編譯
② 怎麼查看assetbundle文件反編譯
Unity會下載Assetbundle本地中,它的工作原理是先通過(版本號和下載地址)先在本地去找看有沒有這個Assetbundle,如果有直接返回對象,如果沒有的話,在根據這個下載地址重新從伺服器或者本地下載。這里版本號起到了很重要的作用,舉個例子,同一下載地址版本號為1的時候已經下載到本地,此時將版本號的參數改成2 那麼它又會重新下載,如果還保持版本號為1那麼它會從本地讀取,因為本地已經有版本號為1的這個Assetbundle了。你不用擔心你的資源本地下載過多,也不用自己手動刪除他們,這一切的一切Unity會幫我們自動完成,它會自動刪除掉下載後最不常用的Assetbundle ,如果下次需要使用的話只要提供下載地址和版本後它會重新下載。
我們在聊聊Assetbundle 中的腳本,在移動平台下Assetbundle裡面放的腳本是不會被執行的,還記得我們打包前給兩個Prefab掛上了腳本嗎?在手機上將Assetbundle下載到本地後,載入進游戲中Prefab會自動在本地找它身上掛著的腳本,他是根據腳本的名來尋找,如果本地有這條腳本的話,Prefab會把這個腳本重新綁定在自身,並且會把打包前的參數傳遞進來。如果本地沒有,身上掛的條腳本永遠都不會被執行。
在Prefab打包前,我在編輯器上給腳本中的變數 name 賦了不同值,當Prefab重新載入游戲的時候,它身上腳本的參數也會重新輸出。
如果你的Assetbundle中的Prefab上引用的對象,那麼這樣做就會出錯了,你需要設定他們的依賴關系。或者運行時通過腳本動態的載入對象。
③ Unity打包好的游戲可以反編譯得到源碼和資源嗎
可以,80%以上的Unity游戲都根本沒做代碼混淆和資源加密,簡直都對不起反編譯三個字。直接拿來用就可以。
工具的話,看代碼用reflector。
資源就是打好包的assetbundle,直接用就好了