隣のデスク覗く言語さん

unityとかc#とかの勉強・発見ログです.参考まで.

privateとpublicの違いについて図付きで説明

はじめに

privateとpublicはunity初見には意味不明です.
でも視覚的に見れば「なるほど」となります.今回はその例です.
 

本題

privateとpublic
publicとしてa
privateとしてbを宣言してみます.
 
Test.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Test : MonoBehaviour {
    //オブジェクトを回転させるだけのスクリプト
 
    public float a;
    private float b=10.0f;
 
    void Update () {
        this.transform.Rotate (0, a, b);
    }
}
 
Test.csスクリプトはオブジェクトを回転させるだけの簡単なものです.
aとb,この二つがどのように異なるかです.
 
 
privateのbはコンポーネント上に表示されません.だけでなく,他のclassやスクリプトから呼び出すことできなくなります.
言うなれば,privateは文字通りプライベートで,そのスクリプト(class)でしか使わない変数にさせるのです.
 
一方,publicのaはコンポーネント上に表示されました.この数値をいじれば,スクリプトに影響します.
言うなれば,publicは文字通りパブリックで,そのスクリプト(class)以外でも干渉できる変数にさせるのです.
unity上では特にそれがコンポーネント上に表示されます.
これ,とても便利なのです.
数値だけでなく,任意のオブジェクトやファイルを引用することもできます.
 

実行例1

 
実行

f:id:gengoshori:20180110172509g:plain

 
x軸回転はしません.aは0なので.(gif画像が動いてなければ横回転しているのだと思ってください)
次に,コンポーネント上でaの値を10に変えて実行してみます.
 

実行例2

 
実行
 

f:id:gengoshori:20180110172533g:plain

 
(gif画像が動いてなければ斜め横回転しているのだと思ってください)
影響を及ぼしましたね.もちろんスクリプトを直接いじり,aの値を変えれば同じことができるわけですが,コンポーネント上でそれが編集できるのは強い.
デバッグなどにも使えそうです.
 

まとめ

 
private:変数を,そのスクリプト(class)でのみ使う指定をする
public:変数コンポーネント上で自由に扱うことできる指定をする
 
次回あたり,publicの更なる便利さを述べていきたいと思います.