Tips

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

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

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ゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search