スクリプトからコンポーネントを無効にする方法

ゲームエンジン

今回はスクリプトからゲームオブジェクトに設定されているコンポーネントを無効にする方法についてです。

基本的な方法

基本的には次の様にGetComponent<T>()メソッドで取得したオブジェクトのenableプロパティを変更します。

this.GetComponent<T>().enebled = false;

<何らかのGameObject>.GetComponent<T>().enebled = false;

次の実例だとGetComponent<Collider>()の戻り値がColliderになっていますが、これはテンプレートに指定した型が戻されるという意味です。戻り値にはenableプロパティが用意されているので、falseを指定することで無効化できます。

別の方法

もしアタッチしたコンポーネントがテンプレートに指定できない場合、次の方法を試してください。

(this.GetComponent(typeof(クラス名))as クラス名).enebled = false;

(<何らかのGameObject>.GetComponent(typeof(クラス名))as クラス名).enebled = false;

キャストの方法は他にも
((クラス名)this.GetComponent(typeof(クラス名))).enebled = false;

テンプレートを指定しないので戻り値がComponent型になっていることに注目してください。Component型にはenabledプロパティが無いので、取得したオブジェクトをキャストしてから無効化します。

コーディングが面倒なのであまりやりたくありませんが、なぜかコンパイルできない場合に使ってみてください。もしかしたら古いバージョンのUnityではこの方法しか無いかもしれません。

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