質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

3393閲覧

複数のPrefabを1つの*.unity3dファイルにするには

MiyamotoSatoshi

総合スコア30

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2015/03/12 08:36

編集2015/03/12 08:39

Prefabフォルダ内にCanvas、Canvas1と言うプレハブファイルがあり、
両方を選択し右クリックでメニューを開いてBuild AssetBundleを選択すると
下記のコードが走りアセットバンドルを作成するのですが
デバッグするとSelection.activeObjectにはCanvas1のみでCanvasがアセットバンドルに
含まれません。
ロードした時にもmainAssetはCanvas1のみでCanvasが含まれません。
複数プレハブを1つのアセットバンドルにするにはどのようにすれば良いでしょうか?

lang

1[MenuItem("Assets/Build AssetBundle")] 2static void ExportResource () 3{ 4 string path = "Assets/StreamingAssets/myAssetBundle.unity3d"; 5 Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); 6 7 Selection.objects = selection; 8 BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, 9 BuildAssetBundleOptions.CollectDependencies 10 | BuildAssetBundleOptions.CompleteAssets); 11}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Unity5かUnity4かわからなかったのでUnity5のAPIで

デバッグするとSelection.activeObjectにはCanvas1のみでCanvasがアセットバンドルに
含まれません。

"Selection.activeObject"はObject型なので複数は取得できないかと。
最後に選択したファイルがここには入っているのではないでしょうか(実験してないので予想ですが)

Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

この戻り値に両方入ってないですかね?

ロードした時にもmainAssetはCanvas1のみでCanvasが含まれません。

mainAssetにアクセスして複数のデータを取得することはできません。
mainAssetは"BuildPipeline.BuildAssetBundle"の第一引数に指定したものだけ取得できます。

1つのアセットバンドルに複数のアセットを含めることには成功しているかと思うので、ロードした後"AssetBundle.LoadAllAssets"で両方のプレハブ取得できないですかね?

投稿2015/03/13 04:58

YuukiTsuchida

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MiyamotoSatoshi

2015/03/13 06:42

> "Selection.activeObject"はObject型なので複数は取得できないかと。 最後に選択したファイルがここには入っているのではないでしょうか(実験してないので予想ですが) 二つ選択した時に必ず下にある側が"Selection.activeObject"になっていたので、 複数ある時は必ず下にある側がアクティブと見なされるようです。 >この戻り値に両方入ってないですかね? 両方とも入っていました、これをアセットバンドルをロードする時に取得したくて 質問いたしました。 >1つのアセットバンドルに複数のアセットを含めることには成功しているかと思う >ので、ロードした後"AssetBundle.LoadAllAssets"で両方のプレハブ取得できないで >すかね?  ありがとうございます、できました。  ただ"AssetBundle.LoadAllAssets"で返されるObjectのカウントが41もあり  そのうちの2つがCanvas、Canvas1になっており残りの39はTextAssetでした。  このtextAssetがいったいどこから来たものなのか今調べています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問