コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Resources フォルダのアセットをファイルパスではなく Inspector の参照から読み込むことができる「Unity Delayed Asset」紹介

はじめに

「Unity Delayed Asset」を Unity プロジェクトに導入することで
Resources フォルダのアセットをファイルパスではなく
Inspector の参照から読み込むことができるようになります

使用例

using UnityEngine;

public class Example : MonoBehaviour
{
    private void Update()
    {
        if ( Input.GetKeyDown( KeyCode.Space ) )
        {
            var texture = Resources.Load<Texture>( "hoge" );
        }
    }
}

通常、Resources.Load を使用する場合は上記のようなコードを記述しますが、

using Trisibo;
using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField, DelayedAssetType( typeof( Texture ) )]
    private DelayedAsset m_textureReference;

    private void Update()
    {
        if ( Input.GetKeyDown( KeyCode.Space ) )
        {
            var texture = m_textureReference.Load() as Texture;
        }
    }
}

「Unity Delayed Asset」を使用すると、このようなコードで記述できるようになります
通常の書き方と比べてソースコードは冗長になってしまいますが、

f:id:baba_s:20190428104933p:plain

Resources.Load で読み込みたいアセットを Inspector で設定しておくことができます

Inspector で設定したアセットは、シーンのロード時には読み込まれず、
Load 関数を呼び出したタイミングで読み込まれるようになっています