アクセス修飾子「public」と「private」をUnityでゲームを制作する際にどのように使い分けているかをまとめました。

8月 17, 2024

アクセス修飾子って何?

publicとprivateはC#の機能です。これらはどこまで自分を晒すかを決める役割を担っています。このほかにもいくつか用意されていますが、それらを総称してアクセス修飾子と呼びます。

publicについて

publicで明言したクラスやフィールドはどこからでもアクセスできちゃいます。

外部から変更されたくないフィールド、外部から呼ばれたくないメソッドには使わないようにしましょう。

ではどのようなものに使用するかというと、クラスのパブリックインターフェースとなるメソッドに使用します。
パブリックインターフェース??という方に向けて、平たく説明するとクラスの振る舞いとして当然そういうメソッドがあるよねと思えるやつです。

一応公式の定義も載せておきます。

任意のアセンブリ内のコードがこの型またはメンバーにアクセスできます。 包含型のアクセシビリティ レベルによって、その型のパブリック メンバーのアクセシビリティ レベルが制御されます。

アクセス修飾子 (C# プログラミング ガイド)

他のクラスからアクセスしたいけど、インスペクターから操作されたくない場合は[HideInInspector]を付ければOKです。

privateについて

privateで宣言したクラスやフィールドはそのクラス内部からしかアクセスできません。

外部から変更されたくないフィールド、外部から呼ばれたくないメソッドに設定しましょう。

この修飾子が付けるとメソッド・フィールドは外部から呼び出されることを想定していないということを主張できます。そうすることで、共同で作業している人が間違えて外部から呼び出して変な依存を増やす心配がなくなります。

知っておきたい知識Unity編

インスペクター上でフィールドの値を設定出来たら便利ですよね?!便利ですよね??

例えば、UIを操作する時にコード上で値を設定しようとするとデザインを担当する人がプログラマー同伴で作業をしないと操作できません。
もし、インスペクター上で値を設定出来れば操作方法だけ教えれば1人でお願いできます。

プログラマーが自由に使える時間が増えますよね。このように利点があります。

インスペクター上で値を設定する方法

主に2通りあります。

1つ目。

フィールドにpublicを宣言する。

2つ目。

フィールドにprivateを宣言して[SerializeField]を付ける。

[SerializeField]

private int age = null;

1つ目は簡単です。publicを宣言するだけで表示されます。ただ、これだと実行中に外部から変更されたくないフィールドには向いていません。そういう場合は2番を使いましょう。privateなので外部から変更されることはありません。

参考資料

アクセス修飾子 (C# プログラミング ガイド)

Unity – Scripting API: HideInInspector (unity3d.com)

C#,Unity

Posted by admin