privateとpublicの違いの基本(C#スクリプト)|Unityゲーム制作

今回は、UnityのC#スクリプトで利用する「private変数」と「public変数」の違いについて、超基本を確認していきます。

はじめに

Unityでスクリプトを作成する時に出てくるprivateとpublicの基本について、実際に見ながら確認していきます。

簡単なスクリプトの例

まずは下記スクリプトを作成します。「num1」は「public」、「num2」は「private」で指定してあります。

using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    public int num1;
    private int num2;

    private void Start()
    {
        num2 = 1;
    }
    private void Update()
    {
        num2 = num2++;
    }
}

Inspector画面でセット

「public」で指定した「num1」はInspector画面でセットすることもできます。

ただし、「private」も「SerializeField」を付けることで同じようにInspector画面でセットすることが出来るようになります。

using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    public int num1;
    [SerializeField] private int num2;
}

「public」だけどInspector画面に表示したくない場合は「HideInInspector」を付けることで表示されなくなります。

using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    [HideInInspector] public int num1;
    [SerializeField] private int num2;

}

他スクリプトからpublic変数を利用

下記の別スクリプトを作成します。

using UnityEngine;

public class ScriptTest2 : MonoBehaviour
{
    [SerializeField] private ScriptTest sc;

    private void Start()
    {
        sc.num1 = 5;
    }
}

下記のように先に作成したスクリプトをセットすることで、他のスクリプトの「public変数」を利用することが出来ます。

また、「public変数」を他スクリプトから取得することを許可して、書き換えるのは拒否するというのは下記のようにします。

using UnityEngine;

public class ScriptTest : MonoBehaviour
{
    [HideInInspector] public int num1 { get; private set; }
    [SerializeField] private int num2;
}

出来るだけ「private」で作成したほうが良いと言われてたりしますが、使い方次第で便利になりますね。

タイトルとURLをコピーしました