【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
1 2 3 4 5 6 7 8 9 10 11 | using UnityEngine; public class GetMainCamera : MonoBehaviour { Camera cam; void Start () { cam = Camera.main; } } |
メインカメラのGameObjectを取得したければ、後ろにgameObjectをつけるだけでOK
1 2 3 4 5 6 7 8 9 10 11 | 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を使うことになる。もちろん問題はないが、↑のやり方に比べるとまどろっこしい気がする。
1 2 3 4 5 6 7 8 9 10 11 12 | using UnityEngine; public class GetMainCamera : MonoBehaviour { GameObject mainCamObj; Camera cam; void Start () { mainCamObj = GameObject.FindGameObjectWithTag( "MainCamera" ); cam = mainCamObj.GetComponent<Camera>(); } } |
GameObjectはタグを使わずにオブジェクト名からFindで取得することも出来る。ただし名前が変わるとnullが返ってくるので注意。
1 2 3 4 5 6 7 8 9 10 11 12 | 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ゲーム開発