【Unity】スクリプトからMain Cameraを取得するのは簡単だよ


Main Cameraの取得はFindGameObjectWithTagやGetComponentを使わなくてもできるという話

Camera.mainを使おう!


「Camera.main」を使うとスクリプトがとてもシンプルになります。(Main Cameraは1台の想定)
例えばメインカメラのCameraコンポーネントを変数に取得したければ、こんな感じでOK

using UnityEngine;

public class GetMainCamera : MonoBehaviour {

	Camera cam;

	void Start () {
		cam = Camera.main;
	}
	
}

 

メインカメラのGameObjectを取得したければ、後ろにgameObjectをつけるだけでOK

using UnityEngine;

public class GetMainCamera : MonoBehaviour {

	GameObject mainCamObj;

	void Start () {
		mainCamObj = Camera.main.gameObject;
	}
	
}

Camera.mainは「MainCamera」のTagがついたCameraコンポーネントを裏側で取得してくれています。Tagを変えてしまうと機能しないので気を付けること。

Camera.mainを使わないと…


Camera.mainを使わない場合、FindGameObjectWithTagとGetComponentを使うことになる。もちろん問題はないが、↑のやり方に比べるとまどろっこしい気がする。

using UnityEngine;

public class GetMainCamera : MonoBehaviour {

	GameObject mainCamObj;
	Camera cam;

	void Start () {
		mainCamObj = GameObject.FindGameObjectWithTag("MainCamera");
		cam = mainCamObj.GetComponent<Camera>();
	}
}

 

GameObjectはタグを使わずにオブジェクト名からFindで取得することも出来る。ただし名前が変わるとnullが返ってくるので注意。

using UnityEngine;

public class GetMainCamera : MonoBehaviour {

	GameObject mainCamObj;
	Camera cam;

	void Start () {
		mainCamObj = GameObject.Find("Main Camera");
		cam = mainCamObj.GetComponent<Camera>();
	}
}

 

スクリプトはシンプルかつ読みやすいことが大切ですね!

以上です。

今月の新着記事

【ついにキタ!】Unity2018.1を日本語化する方法

記事一覧にもどる

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

PAGE TOP