天天看點

unity中ScriptableObject在assetbundle中的加載

轉載請标明出處:http://www.cnblogs.com/zblade/

以前都是寫一些個人的調研部落格,從今天開始,也寫一些個人在開發中遇到的一些可以分享的趟坑部落格,為後續的開發人員提供一些綿薄之力的幫助吧。

好的,今天就分享一個困擾了一個晚上的assetbundle中如何加載ScriptableObject的坑。

一、ScriptableObject在assetbundle中的使用

作為可以顯示配置的資料格式,ScriptableObject類型資料目前已經大量的使用在項目中,具體使用方法不做過多的解釋,檢視相關文章即可。我在使用的時候,首先構造一個繼承的類:

然後基于該類建立一些執行個體資源:

unity中ScriptableObject在assetbundle中的加載

然後建構一個類存儲所有這些資源:

二、将ScriptableObject打成assetbundle 包

利用打包接口,打成AssetBundle的資料包,利用AssetStudio, 檢視打包的資料:

unity中ScriptableObject在assetbundle中的加載

所有的資源都被打成一個bundle,好的,讓我們接下來測試加載:

運作結果:

unity中ScriptableObject在assetbundle中的加載

輸出顯示有資源名字,但是沒有資源!!!

嘗試了各種加載接口,都沒有将資源加載出來,網上搜尋了一下,同樣的加載接口,别人能加載出來,這兒都沒有成功,頭皮都撓破了。

三、如何分析定位以及解決問題

首先,測試一下其他的ab資源是否一樣加載不出資源,發現其他的ab資源沒問題,那麼問題肯定出在目前這個ab包上

其次,如果目前這個AppearanceLib的資料加載不出來,那我單獨打一個AppearanceData類型的資料作為一個ab包,是否可以加載?測試發現可以!

最後,問題很清楚,就是這個AppearanceDataLib的資料有問題,回到項目檢視:

unity中ScriptableObject在assetbundle中的加載

提示AppearanceDataLib找不到?

 這是一個問題,在加載ab中資源的時候,也提示目前腳本missing

the referenced script on this behaviour is missing

 這個腳本是如何放置的?

unity中ScriptableObject在assetbundle中的加載

我将這個類放在AppearanceData.cs檔案中,并沒有單獨的列出一個檔案存放,是以ab找不到該檔案,好的,問題定位了,解決辦法就是單獨建立一個檔案AppearanceDataLib,

用來存放該類:

unity中ScriptableObject在assetbundle中的加載

重新打ab包,測試加載:

unity中ScriptableObject在assetbundle中的加載

得到該scriptableobject資料, done!

四、總結

Unity中的assetbundle,會包含目前資料/資源對應的腳本,這些.cs腳本需要單獨一一的列成一個檔案,不能寫在其他檔案中,不然assetbundle在加載的時候,會找不到這些腳本檔案,在這兒的

問題就是找不到這些腳本對應的資料。