Unityのpublic、private、 [SerializeField]宣言について考えて見た。
Unityスクリプト上でpublicで変数を宣言した場合、自動的にinspectorにて公開される。
また変数に[SerializeField]で宣言した時も同じ結果を見られる。
一般的に変数を作る時、可能な限り最低限に接近できるレベル(private)を持つようにしないといけないが、色んな意見がある中一つの理由として他のクラスで作成されたコードによって変更される可能性があるからである。
public変数宣言でUnityが自動的にinspectorに公開してくれる便利さに頼るより、干渉されないようにprivate宣言後、[SerializeField]で公開する方がいいかもしれない。
privateの目的とは違うが、いちいちスクリプットを探してバグを修正するよりはいいと思う。
Unityの公式レファレンスの見ると[SerializeField]はほとんど使用しないでpublic変数の宣言をすすめているが多くのプログラマーはよくないと行っている。
また、Unite2015Europeではpublic宣言がprivate宣言よりいい性能を出すかもしれないという意見も出ている。