【Unity】他のスクリプトを一括で取得して有効化・無効化を制御する

公開日: : 最終更新日:2017/09/22 3DCG, Unity

スポンサーリンク

Unityを使っていて他のスクリプトを一時的に停止させたいと思ったのですが、ぱっと出てくるものを見つけられなかったのでメモ。ちなみにバージョンは5.6です。

GetComponentsで他のアタッチされているスクリプトを一括で取得します。アタッチできるスクリプトは基本的にMonoBehaviourを継承しているため、受け皿としてはMonoBehaviourの配列にすればOKです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptController  {

	//制御対象のスクリプト
	MonoBehaviour[] scripts ;
	MonoBehaviour that;

	//初期化
	public void Initialize (MonoBehaviour that) {
		//アタッチされている他のスクリプトを取得する
		scripts = that.GetComponents<MonoBehaviour> ();
		this.that = that;
	}

	//スクリプトを無効にする
	public void Suspend(){
		for (int i = 0; i < scripts.Length; i++) {
			//自分自身は除外する
			if (scripts [i].GetInstanceID () == that.GetInstanceID()) {
				continue;
			}
			scripts [i].enabled = false;
		}
	}
	//スクリプトを有効にする
	public void Resume(){
		for (int i = 0; i < scripts.Length; i++) {
			//自分自身は除外する
			if (scripts [i].GetInstanceID () == that.GetInstanceID()) {
				continue;
			}
			scripts [i].enabled = true;
		}
	}
}

制御する側は上記ScriptControllerクラスを定義してStartやAwakeで初期化してその後、停止処理や再開処理を走らせることで他のスクリプトを無効にしたりします。

例えば、下記のようなTestクラスになります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {
	ScriptController sc = new ScriptController();
	
	// Use this for initialization
	void Start () {
		sc.Initialize (this);
		sc.Suspend ();
	}
	
	// Update is called once per frame
	void Update () {
	}
}

これをアタッチすると他のスクリプトは走らないようになります。以後の処理にて停止や再開をうまく操作することで他のスクリプトを操ることができます。

他にいい方法がありそうな気もしますが、こういうこともできるということで紹介しました。

スポンサーリンク
  • このエントリーをはてなブックマークに追加

関連記事

WordPressサイトのSSL対応(HTTPS化)手順のまとめ【さくらサーバー】

先週頃にこのサイトをSSL対応しましたのでその流れについてまとめておき

【Google Charts】動的にグラフを更新する方法

はじめに Webサイト上でグラフを描こうと思った場合、いくつかのJa

体重変化量計算シミュレータ【ダイエット/肥満】

ツール本体 入力 カロリー入力 1日の余剰摂取/消費カロリー

おサイフケータイ対応ストレージ32GBのSIMフリースマホまとめ【2017年秋版】

はじめに SIMフリーの格安スマホのおサイフケータイ機能付きのもので

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑