2016-08-15 6 views
0

Unityプロジェクトには、いくつかの素材ファイルがあるフォルダがあります。これらのマテリアルは、さまざまなメッシュなどに割り当てることができます。これらのマテリアルのリストを持っていて、Update()のこのリストをループしたいと思います。Unityの素材のリスト

このリストを自動的に保持する方法はありますか?フォルダにマテリアルファイルを追加し、対応するマテリアルオブジェクトをこのリストに追加しますか?

+1

エディタモードまたは実行時のためにこれをしたいですか? –

+0

ウメアの質問は本当に良いです、それに答えてください。ただし、実行時に実行するだけの場合は、マテリアル配列を作成してインデックスを変更し、新しいマテリアルをメッシュに割り当てることができます。 – Cabrra

+0

実行時にこのリストを保持したい。 – user2424967

答えて

2

フォルダを順番に調べ、.matという拡張子を持つすべてのファイルを見つけて、手動で読み込む必要があります。

材料ファイルの名前を取得するには、System.IOのクラスC#FileDirectoryをご覧ください。 次はResources.Load() I-eでそれらをロード:

Resources.Load("Material/Night_Sky", typeof(Material)) as Material; 

はEDIT: あなたがビルドでSystem.IOと材料の名前を得ることができないとして上記の溶液のみEDITORで動作します。 Resources.Loadはビルドでうまく動作しますが、素材の名前が必要になります。 コメントResources.LoadAll()に記載されているように仕事をします。 はさらにResources.Load()Resources.LoadAll()の両方のために、あなたはResourcesフォルダにロードするすべての材料を配置する必要があります。すなわち:

あなたの材料へのパスがある場合:Assets\Resources\Materialsあなたが使用する必要があります。

Resources.LoadAll("Materials") 

参考リンクへドキュメント:
Resources.LoadAll
LoadingResourcesatRuntime

+0

申し訳ありませんが、私はこれがエディタでのみ動作すると思います。しかし、すべての資料を1つのフォルダに保存する場合は、Resources.LoadAll()を使用できます。 https://docs.unity3d.com/ScriptReference/Resources.LoadAll.html – Krajca

+0

TheresもResources.LoadAll()https://docs.unity3d.com/ScriptReference/Resources.LoadAll.html * @Krajca 18秒で殴られます: ) – mgear

+0

実行時にこのリストを取得したい。 – user2424967

関連する問題