投稿者 tel | 2014年11月29日

Unityで文字列指定のStartCoroutineを使えないようにする

Unityでコルーチンを開始する StartCoroutine は関数名を文字列で指定するものと IEnumerator を渡すものがある。

関数名を文字列で指定すると実行時までエラーがわからない。なので文字列指定の方は使えないようにする。

そのまま MonoBehaviour から継承するとワーニングが出るので new をつけて明示的に隠匿する。またコンパイラエラーになるように Obsolete 属性をつける。

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [System.Obsolete("使用禁止", true)]
    public new Coroutine StartCoroutine(string methodName, object value = null)
    {
        return null;
    }
}

上記のスクリプトを継承して文字列指定して StartCoroutine を呼び出すとエラーになる。

using UnityEngine;
using System.Collections;

public class Test : NewBehaviourScript
{
    void Start()
    {
        StartCoroutine(TestCo());
        StartCoroutine("TestCo"); // こっちはエラーになる
    }

    IEnumerator TestCo()
    {
        yield return new WaitForSeconds(1.0f);
        Debug.Log("finish");
    }
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。