トップ 一覧 検索 ヘルプ 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終了時にフリーズすることがありました(これが原因と思われるけど自信なし)。
アプリ終了の判定は「[[アプリケーションの終了|unity_quit]]」を参照。

!!読み込んだTexture2DでGetPixelsする
Resourcesとして読み込んだ画像(Texture2D)より、「GetPixels」を呼ぶとエラーになります。
回避方法は「[[Texture2DからGetPixelする|unity_script_texture2d_getpixel]]」を参照。

----
{{lastmodified}}