今回はnamespace(名前空間)を利用してみます。Unityというより少しプログラム的なメモになります。
はじめに
namespaceを利用することで、クラス名の衝突(重複)を避けることができます。
個人でゲームを製作する場合でも、他のゲームでも使えそうなスクリプトにnamespaceを利用することで、再利用しやすくなります。今回はnamespaceを簡単に利用してみます。
簡単なスクリプトの例
まずは下記スクリプトを作成します。
using UnityEngine; public class SampleScript : MonoBehaviour { void Start() { int i = Random.Range(1, 3); } }
「Random.Range」は指定した範囲のランダムな値を返します。上記の場合は1か2となります。よく使うものですね。
この「Random.Range」というメソッドはUnityEngine内にあるので、利用する時は「using UnityEngine」を記載するか、下記のようにする必要があります。
UnityEngine.Random.Range(1, 3);
デフォルトで用意されているUnityEngineというnamespace(名前空間)に、Randomクラスがあり、その中にRangeというメソッドがあるという感じです。
namespace UnityEngine; public static class Random public static int Range(int minInclusive, int maxExclusive)
新規でスクリプトを作成
オリジナルのnamespaceを作成してみます。
新規でスクリプトを作成して、スクリプト名はRandomとします。下記は作成した後に、「Start」と「Update」を消した状態です。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Random : MonoBehaviour { }
スクリプトを下記に変更します。サンプルとして、Random.Rangeを呼ぶと0を返すようにしてます。
namespace Sample { public static class Random { public static int Range() { return 0; } } }
Sampleという名前空間だと分かりにくいし、Random.Rangeで返す値が0というのも変なので、ここは何をしているのか、実際には、ある程度分かるような名前にする所です。今回はあくまでも動作確認のサンプルです。
利用する場合は、UnityEngineの時と同じように、下記のようにします。
using Sample; public class SampleScript { void Start() { int i = Random.Range(); } }
これで実行すると、変数iには0が入ります。
説明文の表示
また、カーソルを合わせたときに、下記のように説明文を出すこともできます。
下記のようにスクリプトを変更します。「///」を入力すると自動で「summary」、「returns」が出ます。
namespace Sample { public static class Random { /// <summary> /// サンプルです。 /// </summary> /// <returns>0</returns> public static int Range() { return 0; } } }
今回はあくまでもnamespaceとはどういうものかという触りです。実際にはどのゲームでも共通で利用できそうなものにnamespaceを利用しておくと便利ですね。