【Unity入門】publicやprivateなどアクセス修飾子の説明

2021年10月11日

アクセス修飾子とは

アクセス修飾子とは、どこからアクセスできるか決めるものです。

メンバー変数やメソッドなどにつけて使います。

アクセス修飾子はいくつか種類があるのですが、今回は主要なアクセス修飾子である『public』と『private』について扱います。

publicをつけたものは、基本的にはどこからでもアクセスできます。

一方でprivateをつけたものは、同じクラス内からしかアクセスできません。

例えば、Animalクラスというクラスがあり、そのメンバー変数として犬が格納されたstring型のdogがあるとします。

dogのアクセス修飾子がpublicであるなら

他のクラスからでも

dogを使うことができます。

一方でdogのアクセス修飾子がprivateなら

他のクラスからはdogを使うことができません。

アクセス修飾子は、省略することも可能です。

その場合はprivateが適用されます。

privateを適用する利点としては、確認することが減って楽になるという点があります。

もし全てにpublicを適用するなら、値を変更をするときに他のクラスでも使われているか確認しなけらばならないので面倒です。

しかし、privateを使えば、他のクラスで使われている可能性がないので、確認することが減って楽になります。

なので、基本的にはprivateを使って、必要な時にはpublicを使うのが良いかと思います。

実際に使ってみる

準備

それでは、アクセス修飾子を使ってみましょう。

まずは、以前作成した、『C# Basics』というプロジェクトを開いてください。

『C# Basics』を開いたら、アクセス修飾子を使うシーンを作りましょう。

Scenesフォルダの中に作成します。

ProjectウィンドウでScenesフォルダを選択しましょう。

選択した状態で『+』ボタンを押します。

色々と出てくるので、『Scene』をクリックしましょう。

すると、Scenesフォルダの中に新しくSceneが作成されます。

Sceneの名前を『Access Modifier』に変更しておきましょう。

今回は『Access Modifier』の中でクラスを作りたいので、Sceneを移動します。

『Access Modifier』をダブルクリックしましょう。

すると、Sceceを移動することができます。

Hierarchyウィンドウを見ると、現在のSceneが『Access Modifier』に変わっていますね。

次にアクセス修飾子を使うためのスクリプトを作っておきましょう。

Scriptsフォルダを選択してください。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので『C# Scripts』を選択します。

すると、新しくスクリプトが作成されます。

名前が確定してしまう前に『AccessModifierScript』と変更します。

名前を変更したら、スクリプトを編集していきましょう。

AccessModifierScriptをダブルクリックしてください。

すると、VIsual Studioが起動して、AccessModifierScriptを編集できるようになります。

スクリプトはScene上にあるオブジェクトに追加することで呼び出されるので、適当に追加しておきましょう。

AccessModifierScriptをMain Cameraにドラッグ&ドロップします。

すると、Main CameraにAccessModifierScriptが追加されます。

アクセス修飾子を使ってみる

それでは、実際にアクセス修飾子を使ってみましょう。

今回は、他のクラスのメンバー変数はpublicなら使えるけど、privateなら使えないということを確かめてみましょう。

まずは、適当にクラスを作りましょう。

AccessModifierScriptクラスの上に

class Human
{
    public int age = 25;
}

と記述しましょう。

コードについて説明しておきます。

このコードはHumanというクラスを作る記述です。

メンバー変数として25という値が格納されたageがあります。

アクセス修飾子はpublicなので、

他のクラスであっても使うことができます。

AccessModifierScriptクラスで使ってみましょう。

Start関数の中に

Human jack = new Human();
Debug.Log(jack.age);

と記述しましょう。

コードについて説明しておきます。

このコードはまず、Humanクラスのインスタンスを作って、

Human型の

jackに格納します。

次にDebug.Logを使って、

jackのageの値を

コンソールに出力します。

ageにはpublicがついているため、

他のクラスからであってもアクセスできます。

この状態で実行すると、コンソールにはageの値である『25』が

出力されるはずです。

実際に出力されるのか、再生して確認してみましょう。

スクリプトを保存して、Unityエディタに戻り、再生ボタンを押しましょう。

すると、予想通りコンソールには25と出力されますね。

うまくいっていますね。

次に、ageのアクセス修飾子をpublicからprivateに変更してみましょう。

publicという記述を

privateに書き換えましょう。

すると、age取得時にエラーが出てしまいますね。

これは、アクセス修飾子がprivateのメンバー変数は、他のクラスからアクセスすることができないためです。

このように、アクセス修飾子をつければ、どこからアクセスできるのか決めることができます。