かずおの開発ブログ(主にRuby)

日々の開発のことを色々書きます。

Properties

Unity - Properties

プロパティとはメンバ変数をカプセル化して、外部から変数へのアクセスをより柔軟に変更できる仕組みです。 まずは基本的な使い方から。 このように変数はprivateにしてプロパティを変数名の大文字にして書くのが一般的な書き方です。get, setの部分をアクセサと呼び、それぞれ変数の読み取り、書き込みを定義します。これにより外部からはプロパティ経由でしか変数にアクセスできなくなります。 gist.github.com アクセスするサンプルのスクリプトはこちら。 動画ではPlayerクラスをnewしていますが、あまりやらない方法(というか上記スクリプトではmonobehaviourを継承させているのでNew出来ないの)なのでgetComponentしています。 gist.github.com

さて上記だと結局public変数と同じじゃないかと思うかもしれませんが、プロパティを定義することで便利になることが2つあります。 * 読み取り専用、書き込み専用の変数が作れる このようにgetやset部分を消去することで読み取り専用、書き込み専用の関数を簡単に作ることが出来ます。 gist.github.com

  • アクセサは関数と同じように扱うことが出来る。 get,setの中で関数を呼ぶことが可能です。例えば下記のように書くことで、値を代入するだけでsetアクセサ内で関数が呼ばれて、3乗した値がセットされるといった具合です。set関数内でCoroutineを呼んで値が変わる度にメソッドを走らせるといったことに用いると便利です。 gist.github.com

とはいったもののいちいちpropertyを書くのは面倒だといった人も多いかと思いますが そんなときは省略形が便利です。 このように書くことで省略して記述が可能です。 gist.github.com