Unity スクリプトリファレンスの”関数”や”変数”という表現は、以前UnityScript(JavaScript)等を使えたのでこのような表現になっていると思いますが、C#ではメソッドやフィールドという表現の方が理解しやすいと思います。
メソッド
class ClassName { public void Method() {} }
仕様 | 呼び方 |
---|---|
Unity スクリプトリファレンス(2021.1) | 関数 |
Unity Scripting API(~2017.1) | Functions |
Unity Scripting API(2017.2~) | Methods |
Microsoft C#リファレンス | メソッド |
Java | メソッド |
C++ | メンバー関数 |
英語版ではMethodsと表現しているので、本サイトでもメソッドを使います。
静的メソッド
class ClassName { public static void StaticMethod() {} }
ClassName.StaticMethod()で呼び出します。静的メソッド内ではthisが使えず、静的でないフィールドやメソッドにアクセスできません。
仕様 | 呼び方 |
---|---|
Unity スクリプトリファレンス(2021.1) | Static 関数 |
Unity Scripting API(~2017.1) | Static Functions |
Unity Scripting API(2017.2~) | Static Methods |
Microsoft C#リファレンス | 静的メソッド |
Java | クラスメソッド |
C++ | 静的メンバー関数 |
クラスメソッドが分かりやすい気がしますが、C#では静的(Static)と表現していると思うので、本サイトでは静的メソッドを使います。
フィールド
class ClassName { int field; int staticField; }
仕様 | 呼び方 |
---|---|
Unity マニュアル(2021.1) | 変数、Static 変数 |
Unity Manual(2021.1) | Variable、Static Variable |
Microsoft C#リファレンス | フィールド、静的フィールド |
Java | インスタンス変数、クラス変数 |
C++ | データメンバー、静的データメンバー |
C#にグローバル変数やファイルスコープの静的変数はありませんが、変数には引数やローカル変数もあるので単に変数と呼ぶとまぎらわしい場合があります。本サイトではフィールドを使います。
静的フィールド
class ClassName { static int staticField; }
ひとつの静的フィールドはインスタンスの数に関係なくひとつしかありません。クラスに属しClassName.staticFieldのようにアクセスします。
仕様 | 呼び方 |
---|---|
Unity マニュアル(2021.1) | Static 変数 |
Unity Manual(2021.1) | Static Variable |
Microsoft C#リファレンス | 静的フィールド |
Java | クラス変数 |
C++ | 静的データメンバー |
インスタンスフィールド
class ClassName { int field; }
インスタンスフィールドはインスタンス毎に異なる値を持てます。
仕様 | 呼び方 |
---|---|
Unity マニュアル(2021.1) | 変数 |
Unity Manual(2021.1) | Variable |
Microsoft C#リファレンス | インスタンスフィールド |
Java | インスタンス変数 |
C++ | 静的データメンバー |
プロパティ
class ClassName { public int property { get; set; } }
プロパティはgetter、setterによりアクセスします。
仕様 | 呼び方 |
---|---|
Unity スクリプトリファレンス(2021.1) | 変数 |
Unity Scripting API(~2017.1) | Variables |
Unity Scripting API(2017.2~) | Properties |
Microsoft C# リファレンス | プロパティ |
Java | – |
C++ | – |
プロパティはInspector windowに表示されないので、プロパティとフィールドは区別した方がいい場合があります。だた、コード上で使う場合は同じように使えるので区別しない場合があります。
カプセル化視点ではフィールドは通常private、プロパティは通常publicが自然だと思います。
フィールドをそのままアクセスできるプロパティはあまり意味がないので、publicなフィールドという使われ方もします。
コメント