この記事でのバージョン
Unity 2018.2.17f1
はじめに
Unityには最初からフォントやマテリアル、3Dモデルなどのリソースが組み込まれています。
ただし、Assets(やPackages)などのUnityエディタから見える所には配置されていません。
という事で今回はデフォルトのリソースがどこに配置されているのかと、
そのリソースをプログラムから取得する方法の紹介です!
デフォルトのリソースの配置場所
まずはデフォルトのリソース(unity default resources)の配置場所ですが、Windowsの場合は
Unityをインストール場所/Editor/Data/Resourceにあります。
Macの場合はUnity.appを右クリックからパッケージの内容を表示した先の
Contents/Resourcesにあります。
ちなみに、このunity default resourcesに
.asset付けてUnityのプロジェクトに入れると、中身を見る事が出来ます。
GetBuiltinResource とGetBuiltinExtraResource
次にデフォルトのリソースをプログラムから取得したい場合の話ですが、
そんな時はResources.GetBuiltinResourceを使います。
なお、Resources.Loadとは違い、拡張子も必要になります。
//Spriteのデフォルトのマテリアルを取得 Material spriteDefaultMaterial = Resources.GetBuiltinResource<Material>("Sprites-Default.mat");
しかしResources.GetBuiltinResourceは、
エディタ上だと「Failed to find Sprites-Default.mat」のようなエラーが出てしまいます。
なのでエディタ上でデフォルトのリソースを取得したい場合は
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
参考