(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]

Unityのデフォルトのリソースがある場所と、プログラムでの取得方法【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2018.2.17f1


はじめに

Unityには最初からフォントやマテリアル、3Dモデルなどのリソースが組み込まれています。

f:id:kan_kikuchi:20190119193058j:plain


ただし、Assets(やPackages)などのUnityエディタから見える所には配置されていません。


f:id:kan_kikuchi:20190119193958j:plain


という事で今回はデフォルトのリソースがどこに配置されているのかと、

そのリソースをプログラムから取得する方法の紹介です!


デフォルトのリソースの配置場所

まずはデフォルトのリソース(unity default resources)の配置場所ですが、Windowsの場合は

Unityをインストール場所/Editor/Data/Resourceにあります。


f:id:kan_kikuchi:20190119203737j:plain


Macの場合はUnity.appを右クリックからパッケージの内容を表示した先の


f:id:kan_kikuchi:20190119203754j:plain


Contents/Resourcesにあります。


f:id:kan_kikuchi:20190119203823j:plain


ちなみに、このunity default resourcesに

.asset付けてUnityのプロジェクトに入れると、中身を見る事が出来ます。

f:id:kan_kikuchi:20190119203840j:plain
f:id:kan_kikuchi:20190119203900j:plain


GetBuiltinResource とGetBuiltinExtraResource

次にデフォルトのリソースをプログラムから取得したい場合の話ですが、

そんな時はResources.GetBuiltinResourceを使います。

なお、Resources.Loadとは違い、拡張子も必要になります。

//Spriteのデフォルトのマテリアルを取得
Material spriteDefaultMaterial = Resources.GetBuiltinResource<Material>("Sprites-Default.mat");


しかしResources.GetBuiltinResourceは、

エディタ上だと「Failed to find Sprites-Default.mat」のようなエラーが出てしまいます。


f:id:kan_kikuchi:20190119210448j:plain


なのでエディタ上でデフォルトのリソースを取得したい場合は

UnityEditor.AssetDatabase.GetBuiltinExtraResourceを使います。

こちらも拡張子が必須です。

//Spriteのデフォルトのマテリアルを取得(エディタ上用)
Material spriteDefaultMaterial = UnityEditor.AssetDatabase.GetBuiltinExtraResource<Material>("Sprites-Default.mat");


しかし、UnityEditorクラスはエディタ上でしか使えません。


という事でエディタでも実機でも使いたい場合は以下のような感じで切り替えて使う必要があります。

//Spriteのデフォルトのマテリアルを取得(実機、エディタ上両対応)
#if UNITY_EDITOR
  Material spriteDefaultMaterial = UnityEditor.AssetDatabase.GetBuiltinExtraResource<Material>("Sprites-Default.mat");
#else
  Material spriteDefaultMaterial = Resources.GetBuiltinResource<Material>("Sprites-Default.mat");
#endif



参考