【Unity】スクリプトからMain Cameraを取得するのは簡単だよ
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
Main Cameraの取得はFindGameObjectWithTagやGetComponentを使わなくてもできるという話
※この記事で使用しているUnityのバージョンは2017.1.0f3です。
[Unity_317×90]
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>(); } }
スクリプトはシンプルかつ読みやすいことが大切ですね!
以上です。
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発