今まで様々なUnityの記事を書いてきましたがいったん初歩に帰ってUnityで使うC#言語について超入門していきたいと思います。
ではUnityでC#スクリプトファイルを作成したときのヤツから解説していきたいと思います。
|
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } |
こやつですね。
①usingってなんやねん
using UnityEngine ではUnityで用意されている様々なパーツを使うことを宣言します。
Unityでは物理演算や3Dの描画など様々な機能が標準で用意されていますのでそれらを使えるようにするための宣言です。
②MonoBehaviourってなんやねん
public class NewBehaviourScript : MonoBehaviour { }
C#では ” : ” によってクラスの継承を行うことができます。
継承では継承元(ここではMonoBehaviour)クラスのメンバー(変数とか)をそのまま呼び出すことができます。
Unityエディタ内で書くC#スクリプトはすべてこのMonoBehaviourを継承している必要があります。
このMonoBehhaviour内でvoid Update()は1フレームごとに呼ばれるだとかRigidbodyコンポーネントは物理演算をしてくれるとかが決まってるわけです。
それらを使うために継承が必要なわけですね。
③public ってなんやねん
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript { public int Kazu; private int Kazu2; public static int Kazu3; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } } |
publicとは英語で公共のという意味ですが、ここでのpublic もまさにその意味でpublic とついて宣言された変数については他クラスから呼び出すことが可能です。またpublicな変数ならインスペクターから確認、変更ができます。
逆にprivateで宣言された変数に関しては他クラスから呼び出すことができません。

④全部publicでいいじゃん
確かにそうかもしれません。publicな変数ならインスペクターから確認、変更ができるし。
しかしプログラムが莫大となった時、別のクラスで同じ名前の変数を複数宣言する際、すべてpublicだとどれのことかわからなくなります。
これを避けたいときにprivateを使います。例えばインベーダーゲームを作るとき、普通ならプレイヤーの位置はprivateで構わないでしょう。
しかしプレイヤーの位置によって敵の動きを変えたいならその敵オブジェクトからプレイヤーの位置を知れる必要があります。その際はプレイヤーの位置はpublicな変数である必要がありますね。
To Be Continued….