トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_script_get_resources_object

リソースとして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秒