tanaka's Programming Memo

プログラミングについてのメモ。

Unity4以降でのSetActiveRecursivelyの扱い

keyword : Unity4.x SetActiveRecursively

答え

SetActive()を使う。

経緯

Unity4以前でゲームオブジェクトの有効/無効を操作するには、ゲームオブジェクトのactiveプロパティの値を直接操作していた。

// ゲームオブジェクトを有効にする
gameObject.active = true;

// ゲームオブジェクトを無効にする
gameObject.active = false;

この操作では、操作したゲームオブジェクトのみ、有効/無効が操作されるので、子供のゲームオブジェクトの有効/無効は連動していなかった。そこで、gameObject.SetActiveRecursively()を使って、まとめて有効/無効を操作していた。


Unity4からSetActive()メソッドが追加されて、これで子供まで含めた有効/無効を設定できるようになった。それに伴いSetActiveRecursively()が廃止された。

以上から、SetActiveRecursively()の代わりに、SetActive()を利用すればよくなった。