アセットを含むオブジェクトにアクセスすることができます。
エディタ上で Resources.FindObjectsOfTypeAll を使用してアセットおよびシーンのオブジェクトを見つけることが出来ます。 "Resources" という名前の フォルダ内にあるすべてのアセットは、Resources.Load関数を介してアクセスすることが できます。 複数の "Resources" フォルダが存在する場合があり、オブジェクトのロード時に全て確認されます。 このクラスは、アセットにアクセスするときパス名を指定しないで、 代わりにメンバ変数を宣言することによってアセットの参照を可能にし、インスペクターでそれを割り当てています。 この方法を使えば、Unityはビルドする時に自動的にアセットの容量を計算することが出来ます。 同じオブジェクトを生成しないので、ゲ ームサイズを最小限に抑えることができるようになります。 "Resources" フォルダにアセットを配置する場合はこれが出来ず、結果的に "Resources" フォルダの全てのアセットはビルドに含まれます。 パス名で利用する欠点として、スクリプトが直接アセットの場所など必要な情報を持つと、 他のスクリプトで使用する際、再利用できず同じものを生成してしまうということです。 その一方で、インスペクターに情報が表示され、設定がしやすいという利点もあるので、場合によって使い分けるようにします。 しかし、インスペクタ上でリンクするのでなく、アセットを名前でフェッチしたほうが便利な場合があります。 要するにインスペクタ上でオブジェクトに参照を割り当てすることが不都合な場合です。 例えばゲームオブジェクトをスクリプトからプロシージャルに作成して、プロシージャル生成したメッシュにテクスチャを割り当てする場合があるかもしれません。 いくつかのロード済みのアセット、特にテクスチャではシーン上にインスタンスが存在しない場合もメモリを多く消費します。アセットが不要となったときに、このメモリを再び使用可能とするには Resources.UnloadUnusedAssets を使用できます。
var go = new GameObject.CreatePrimitive(PrimitiveType.Plane); go.renderer.material.mainTexture = Resources.Load("glass");
FindObjectsOfTypeAll | /type/ で指定した型の全てのオブジェクトを取得します |
Load | Loads an asset stored at path in a Resources folder. |
LoadAll | Loads all assets in a folder or file at path in a Resources folder. |
LoadAssetAtPath | アセットのパスからリソースのを取得します(エディタのみ) |
LoadAsync | パスを設定し、Resourcesフォルダにあるアセットを非同期でロードします |
UnloadAsset | メモリから assetToUnload をアンロードします |
UnloadUnusedAssets | 使用していないアセットをアンロードする。 |