GameObject.Find 系関数の処理速度の検証結果を受けて、シングルトンを見なおした。
この記事は、以下の記事の続き。
[Unity3D]もっと楽なシングルトンの実装
[Unity3D]シングルトンなオブジェクトを作る
試したのはオブジェクトをtagから検索する事で高速化を図る手法。この手法だと必ずGameControllerもしくはGameManagerタグの付いたオブジェクトにアタッチする必要がある。
結論としては、それなりの高速化が見込めそうだ(オブジェクトの数が増えても速度に影響しないのが特徴)。ただし、高速化する部分は「Awakeが呼ばれる前に呼び出したケース」のみで、Awakeが呼ばれた以降の場合は速度に差は殆ど無い。
使い方は今までどおり。以下のように記述する。また、ソースコードは特定のタグのオブジェクトに必ずアタッチする。
using UnityEngine;
using System.Collections;public class TestCode : SingletonMonoBehaviourFast<TestCode> {
}
ついでに過去に作った汎用シングルトンも改良。こちらは特に指定無く普通にInstanceで持ってこれる。
なお、どちらも一度呼んだ後は参照コストはほぼ0(計測不能)になる。