GameObject の アクティブを切りかえる際に gameObject.SetActive(enable);
で切り替えると思いますが
Active が true な GameObject に対して SetActive(true)
をしても意味はありません
そのため 異なってなくても呼び出した場合と、異なっていた場合のみ SetActive() を呼び出した場合の時間を見てみます
// 1万回ループして 10回に1回切り替える for (int i = 0; i < 10000; i++) { target.SetActive(enable); if (i % 10 == 0) { enable = !enable; } }
コンポーネントは以下
結果
ほとんど変化が無かった・・・
常に呼び出す場合
異なった際のみ呼び出す場合
大量にコンポーネントをつけてみた
むしろ異なったときのみ呼び出す場合は遅くなるという
常に呼び出す場合
異なった際のみ呼び出す場合
結論
大量にコンポーネントがある場合チェック処理を入れると遅くなったので
拡張等せず普通に SetActive
を呼び出したほうがよさそう
※UnityEditor上での検証なので実機だと変わるかもしれませんが