Unityプロジェクトには、いくつかの素材ファイルがあるフォルダがあります。これらのマテリアルは、さまざまなメッシュなどに割り当てることができます。これらのマテリアルのリストを持っていて、Update()のこのリストをループしたいと思います。Unityの素材のリスト
このリストを自動的に保持する方法はありますか?フォルダにマテリアルファイルを追加し、対応するマテリアルオブジェクトをこのリストに追加しますか?
Unityプロジェクトには、いくつかの素材ファイルがあるフォルダがあります。これらのマテリアルは、さまざまなメッシュなどに割り当てることができます。これらのマテリアルのリストを持っていて、Update()のこのリストをループしたいと思います。Unityの素材のリスト
このリストを自動的に保持する方法はありますか?フォルダにマテリアルファイルを追加し、対応するマテリアルオブジェクトをこのリストに追加しますか?
フォルダを順番に調べ、.mat
という拡張子を持つすべてのファイルを見つけて、手動で読み込む必要があります。
材料ファイルの名前を取得するには、System.IO
のクラスC#File
とDirectory
をご覧ください。 次は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
申し訳ありませんが、私はこれがエディタでのみ動作すると思います。しかし、すべての資料を1つのフォルダに保存する場合は、Resources.LoadAll()を使用できます。 https://docs.unity3d.com/ScriptReference/Resources.LoadAll.html – Krajca
TheresもResources.LoadAll()https://docs.unity3d.com/ScriptReference/Resources.LoadAll.html * @Krajca 18秒で殴られます: ) – mgear
実行時にこのリストを取得したい。 – user2424967
エディタモードまたは実行時のためにこれをしたいですか? –
ウメアの質問は本当に良いです、それに答えてください。ただし、実行時に実行するだけの場合は、マテリアル配列を作成してインデックスを変更し、新しいマテリアルをメッシュに割り当てることができます。 – Cabrra
実行時にこのリストを保持したい。 – user2424967