C#で修正漏れを防止するnameofについて【Unity】

今回はUnityというよりC#のプログラム的なメモです。

修正漏れ防止

例えば、下記の様にInvokeやInvokeRepeatingでは呼び出すメソッドを文字列として指定します。

using UnityEngine;

public class CreateSquare : MonoBehaviour
{
    [SerializeField] private GameObject _SquarePrefab;
    [SerializeField] private float _interval;

    void Start()
    {
        InvokeRepeating("SquareIns", 0f, _interval);
    }
    private void SquareIns()
    {
        Instantiate(_SquarePrefab);
    }
}

ここでメソッド名を変更するとコンパイルエラーとならず、実行した時にエラーとなります。

しかし、下記の様にnameofで囲うとコンパイルエラーになり、修正漏れに気付きます。

        InvokeRepeating(nameof(SquareIns), 0f, _interval);

コルーチンの呼び出しでも利用できるけど、パラメータもあるので、コルーチンの場合は下の方が自然ですかね。

        StartCoroutine(nameof(SquareIns));
        StartCoroutine(SquareIns());

あとは、switch文の中でも使えそうですね。

タイトルとURLをコピーしました