アセットバンドルの読み込みエラー

2,140 views
Skip to first unread message

tatsu...@gmail.com

unread,
Jul 25, 2018, 5:09:42 AM7/25/18
to 宴ユーザーグループ
Unityの習熟度: 学生時代3か月ほど使っていて、業務では1か月ほど
宴のバージョン: 3.3.8
UnityのバージョンとOS: Unity2017.4.3 Windows

リソースコンバーターでアセットバンドル化をしたものをサーバーから読み込もうとしているのですが、エラーが出ます。

【エラー内容】
1つ目
Failed to decompress data for the AssetBundle 'Memory'.
UnityEngine.WWW:get_assetBundle()
Utage.<LoadAssetBundleAsync>c__AnonStorey4:<>m__0(WWW) (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:220)
Utage.<LoadAsync>c__AnonStorey3:<>m__0(WWW) (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:196)
Utage.<LoadAsyncSub>c__Iterator0:MoveNext() (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:157)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

2つ目
ドロップボックスのURL/Windows/Windows?datetime=131769808055162321 is not assetBundle
UnityEngine.Debug:LogError(Object)
Utage.<LoadAssetBundleAsync>c__AnonStorey4:<>m__0(WWW) (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:229)
Utage.<LoadAsync>c__AnonStorey3:<>m__0(WWW) (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:196)
Utage.<LoadAsyncSub>c__Iterator0:MoveNext() (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:157)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

3つ目
Load Error
UnityEngine.Debug:LogError(Object)
Utage.AdvEngineStarter:<Awake>m__0() (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:105)
Utage.<LoadEngineAsyncSub>c__Iterator2:MoveNext() (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:144)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

読み込み場所はドロップボックスを指定しています。
宴とは関係ないアセットバンドルはドロップボックスから取得できることは確認しています。

【サーバーURL】
Utage(フォルダ)←AdvEngine StarterのサーバーURL指定はここを指定しています。
 └Windows(フォルダ)
 └Android(フォルダ)
 └iOS(フォルダ)

ご回答いただければ幸いです。
よろしくお願いします。

マッドネスラボ

unread,
Jul 25, 2018, 5:04:44 PM7/25/18
to 宴ユーザーグループ
DropBoxの公開URL機能は、仕様変更で使えなくなったはずです。
宴のドキュメントも一部古いままで、DropBoxへの言及があったので削除しました。

なので、DropBoxではないファイルサーバーでやればいけると思います。
ただ、DropBoxであっても宴と関係ないアセットバンドルが取得できているということなので、その点はちょっと私ではわかりません。


tatsu...@gmail.com

unread,
Jul 25, 2018, 9:05:44 PM7/25/18
to 宴ユーザーグループ
ご回答ありがとうございます。
別のファイルサーバーで試してみます。

tatsu...@gmail.com

unread,
Jul 26, 2018, 5:08:03 AM7/26/18
to 宴ユーザーグループ
GoogleドライブやIISでのサーバーで試してみたところ

WWW load error 指定のURL
404 Not Found
UnityEngine.Debug:LogError(Object)
Utage.<LoadAsync>c__AnonStorey3:<>m__1(WWW) (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:201)
Utage.<LoadAsyncSub>c__Iterator0:MoveNext() (at Assets/Utage/Scripts/GameLib/File/WWWEx.cs:144)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

というエラーが出てしまいました。
探しているページが見つからないというのはわかったのですが、URLも間違っていないことを確認しています。
そこで確認したいことをがあるのですが、指定するURLはフォルダを参照することが出来ればいいという認識で間違いないでしょうか?
フォルダをダウンロードするとなるとzipファイルになってしまう、もしくはそもそも出来ないという形になってしまうので、何か対処方法があれば教えていただきたいです。

そしてこれは余談ですが、iOSやAndroidフォルダの上のフォルダを指定すれば、宴側が勝手にプラットフォームを判断してくれるという認識で間違いないでしょうか?

初歩的な質問になってしまいますが、ご回答いただければ幸いです。
よろしくお願いいたします。

tatsu...@gmail.com

unread,
Jul 26, 2018, 5:15:10 AM7/26/18
to 宴ユーザーグループ
書き忘れていましたが、今はWindowsのエディタ上で起動しています。

マッドネスラボ

unread,
Jul 26, 2018, 6:19:36 AM7/26/18
to 宴ユーザーグループ
>指定するURLはフォルダを参照することが出来ればいいという認識で間違いないでしょうか?
そうなります。

ドキュメントの例(Sampleシーン)でいえば、
SeverURLは http://madnesslabo.net/Utage3Download/Sample/  のように指定します。


>フォルダをダウンロードするとなるとzipファイルになってしまう
フォルダをダウンロードというのがわからないです。
フォルダ自体をダウンロードする機能は宴にもUnityにもないと思います。
最初にDLするファイルは、 http://madnesslabo.net/Utage3Download/Sample/Windows/Windows という拡張子なしのファイルです、

>そしてこれは余談ですが、iOSやAndroidフォルダの上のフォルダを指定すれば、宴側が勝手にプラットフォームを判断してくれるという認識で間違いないでしょうか?
はい。サンプルでいうと、
ServerURLには
実際のサーバー上には、
のように、プラットフォーム別にフォルダを置きます。

実行時に、現在のプラットフォームに合わせたフォルダ以下のアセットバンドルをダウンロードします。
・WindowsのUnityエディタ上であれば、Windowsフォルダ以下からダウンロード
・Android実機であれば、Androidフォルダ以下からダウンロード
・IOS実機であれば、IOSフォルダ以下からダウンロード
となるようになっています。現在のプラットフォームが何かは内部のプログラムで判別しています。

注意点として、AndroidやIOSをターゲットプラットフォームとしていても、UnityはWindowsUnityエディタ上ではWindowsのアセットバンドルしかロードできないため、
ターゲットプラットフォームによらず、WindowsUnityエディタ上ではWindowsのアセットバンドルをロードします。


tatsu...@gmail.com

unread,
Jul 26, 2018, 9:39:49 AM7/26/18
to 宴ユーザーグループ
度々申し訳ありません。
Googleドライブなどではファイル階層を見に行くことができないため404エラーが出ていたことがわかりました。
サーバーを作ってアクセスすること自体はうまくいったのですが、

Not found in assetbundle list サーバーURL/Scenario.scenarios.asset
UnityEngine.Debug:LogError(Object)
Utage.AssetFileBase:ParseLoadPath() (at Assets/Utage/Scripts/GameLib/File/UtageFile/AssetFileBase.cs:158)
Utage.AssetFileUtage:.ctor(AssetFileManager, AssetFileInfo, IAssetFileSettingData) (at Assets/Utage/Scripts/GameLib/File/UtageFile/AssetFileUtage.cs:24)
Utage.AssetFileManager:AddSub(String, IAssetFileSettingData) (at Assets/Utage/Scripts/GameLib/File/AssetFileManager.cs:208)
Utage.AssetFileManager:GetFileCreateIfMissing(String, IAssetFileSettingData) (at Assets/Utage/Scripts/GameLib/File/AssetFileManagerSingleton.cs:48)
Utage.AssetFileManager:Load(String, Object) (at Assets/Utage/Scripts/GameLib/File/AssetFileManagerSingleton.cs:72)
Utage.<LoadScenariosAsync>c__Iterator5:MoveNext() (at Assets/Utage/Scripts/ADV/AdvEngineStarter.cs:299)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Scenario.scenarios.assetがないと言われてしまいます。
頭のScenarioに関しては、こちらでリソースコンバーターで指定しているフォルダ名だと思うのですが、リソースコンバーターでアセットバンドル化したフォルダ内を見ても、Scenario.scenarios.assetというファイルがありません。
iOSとAndroidとWindows全てのフォルダを見ましたが、見当たりませんでした。
scenarios.assetはあるのですが……。

何か原因がわかりましたら、教えていただけますでしょうか。
よろしくお願いします。

マッドネスラボ

unread,
Jul 26, 2018, 10:11:25 AM7/26/18
to 宴ユーザーグループ
>scenarios.assetはあるのですが……
その名前は本当にあっていますか?だとするとおかしいです。
通常では、そこは「プロジェクト名.scenarios.asset」というアセットバンドルが作成されているはずです。

デフォルトではAdvEngineStarterの「Root Resource Dir」に「プロジェクト名」が設定されていて、
この値を使って「プロジェクト名.scenarios.asset」をDLしに行きます。

なので、Scenarioという名前でプロジェクトを作っているのであれば、
ローカルには「Scenario.scenarios」というScriptableObjectが作成されて、
リソースコンバーターで、そのアセットバンドルである「Scenario.scenarios.asset」が作成されるはずで、
DLの際には、サーバーから「Scenario.scenarios.asset」をDLしているはずです。


tatsu...@gmail.com

unread,
Jul 27, 2018, 8:38:35 AM7/27/18
to 宴ユーザーグループ
指定しているプロジェクト場所が間違っていたため、生成のされ方がおかしくなっていました。
大変申し訳ありません。

そしてもう一つ質問なのですが、その後アセットバンドル化してロードしようとすると

Not found in assetbundle list 指定URL/Windows/Texture/Character/Utako/utako_smile.png
UnityEngine.Debug:LogError(Object)

というエラーが17件ほど出てしまいます。
どれも画像がないと言われているエラーです。
元々入っていたサンプルの画像などを消してからアセットバンドル化したのですが、不要な画像などを消す場合はただ消すだけではだめなのでしょうか?
何度も質問して申し訳ありませんが、ご回答よろしくお願い致します。

tatsu...@gmail.com

unread,
Jul 27, 2018, 8:52:26 AM7/27/18
to 宴ユーザーグループ
もう一つご質問がありました。
フォルダ内に「keep」というファイルがあるのですが、これはどういったファイルなのでしょうか?

マッドネスラボ

unread,
Jul 27, 2018, 9:20:04 AM7/27/18
to 宴ユーザーグループ
>Not found in assetbundle list 指定URL/Windows/Texture/Character/Utako/utako_smile.png
エクセルファイルのほうの、TextureシートやCharacterシートにあるファイルは最初にDLをしますので、消してしまうとエラーになります。
不要であればちゃんとTextureシートやCharacterシートからも記述を削除してください。

>「keep」というファイル
UnityのAssetStoreが使うパッケージの仕組みや、Gitなどの一部のバージョン管理システムでは空のフォルダあるとそれを勝手に削除してしまいます。
宴は指定の名前のフォルダにリソースを置く構造になっていて空であってもフォルダが必要なため、消されないようにkeepというダミーのファイルをおいています。

Reply all
Reply to author
Forward
0 new messages