リソースとしてObjectを取得
Unityのプロジェクトで、
Assets xxxx.unity [Scripts] [Resources] <== コレ photo_leaf_texture.png [materials] leafMaterial.mat
のように「Resources」フォルダを作成し、この中にテクスチャファイルやマテリアルファイル(mat)を格納しておきます。
「Resources」フォルダはどの階層でも指定できるため、Assetを配布する際にResourcesフォルダを含めておく、ということもできます。
リソースの読み込み
Texture2D tex = Resources.Load("photo_leaf_texture", typeof(Texture2D)) as Texture2D;
のようにするとテクスチャの読み込み。
もしくは以下のように指定。
Texture2D tex = Resources.Load<Texture2D>("photo_leaf_texture");
Material m = Resources.Load("materials/leafMaterial", typeof(Material)) as Material;
のようにするとマテリアルの読み込みができます。
なお、ファイル拡張子は指定しないようにします。
読み込みに失敗するとnullが返ります。
この機能はandroid/iOSでも使用でき、リソースを分離しておき遅延で読み込むことでUnityで作ったアプリの起動時間を短縮させる効果があります。
リソースの解放
使用が終わった後は、
Resources.UnloadAsset(m);
のようにして解放してあげます(メモリの節約)。
アプリ終了時にResources.UnloadAssetを呼ばないと、Unity終了時にフリーズすることがありました(これが原因と思われるけど自信なし)。
アプリ終了の判定は「アプリケーションの終了」を参照。
読み込んだTexture2DでGetPixelsする
Resourcesとして読み込んだ画像(Texture2D)より、「GetPixels」を呼ぶとエラーになります。
回避方法は「Texture2DからGetPixelする」を参照。
最終更新時間:2019年01月02日 18時51分10秒