Unity::UniRx自分用メモ:C#のご当地仕様?!ReactiveProperty, ジェネリック, MVVM,プロパティ,アクセサーなど
コメント
ReactivePropertyのあたりを調べていて、いろいろ謎だったことが分かったと思うのでメモに残す。聞いたことある単語が最初の3行くらいに凝縮されていたことが判明・・・ C#、奥が深い・・・
参考資料
資料1:これを主に起点として、いろいろ試行錯誤。重要資料です。 qiita.com
資料2:ReactivePropertyの解説で役立ちました blog.okazuki.jp
資料3:private=>publicの流れプロパティ,set,getの理解に役立ちました ufcpp.net
資料4:ReactivePropertyとは何ぞやの基礎中の基礎の解説 ccs-tech-blog.blogspot.jp
コードのこの部分のメモ。
参考資料1からの引用
private ReactiveProperty<int> _countReactiveProperty = new ReactiveProperty<int>(0); // イベントを購読できるようにする. public ReactiveProperty<int> CountReactiveProperty { get { return _countReactiveProperty; } }
これでいつでもSubscribeできるオブジェクトができたみたいなんだけどね。これより先は、UniRxの既存のフィルターみたいなメソッドをつなげていけば直感的にわかりやすいコード構成なので省く。この3行はどういうことなのかしら・・・
疑問
整理すると3点くらいかな
1:ReactiveProperty<int>
ってなに??ReactiveProperty<string>
とか似て非なるコードもあるのだけども・・・
2:privateで宣言してからpublicで改めて呼んでるのはこれはなに?
3:get...てなに??setってメソッドのようなものもくっついているコード例もあってどういうこと??
疑問1「:ReactiveProperty<int>
ってなに??ReactiveProperty<string>
とか似て非なるコードもあるのだけども・・・ 」の自分なりの解答
この資料によると、 ccs-tech-blog.blogspot.jp
ReactivePropertyは値が変化したら信号を出すイメージのオブジェクトというざっくりとした理解でとりあえず動かす目的ならOKぽい。
ReactiveProperty<int>
やReactiveProperty<string>
をまとめてReactiveProperty<T>
と呼んでいて、このTはTypeの略らしい。そして、このTをジェネリックと呼ぶらしい。要するに、int,stringとデータ型が変わっても同じ処理をするオブジェクトにはこのジェネリックという概念を適用するということのようだ。
ちなみにReactiveProperty
疑問2「privateで宣言してからpublicで改めて呼んでるのはこれはなに?」と疑問3「get...てなに??setってメソッドのようなものもくっついているコード例もあってどういうこと??」の自分なりの解答
まとめて解答できる。参考資料2でも同じような個所がある
private string _input; public string Input { get => _input;
この資料により分かった。 ufcpp.net
つまり安全設計のためであった。おおもとの変数は、privateで隠す→publicで使うごとに呼び出す、そのときに値を設定するためにget,値を変更するためにsetというメソッド(アクセサー。値にアクセスするからだろう)のようなものを使い、get,setをアクセサーと呼ぶらしい。なるほど。アクセサーはクラスからオブジェクトを作る際(つまり初期化時)に変数だけちょこちょこいじりたいときに使うよう。
成果
今日の最終成果。各ボタン、UniRxで全部制御しています^^ 機能の一部の参考にした資料 #UniRx #Unity https://t.co/edKnkIiyOw pic.twitter.com/5om4e2WYZo
— mawa (@k_mawa82) 2018年4月6日