前提・実現したいこと
MonoBehaviourを継承したクラスで,Start()内で一度だけ初期化され,それ以降の変更を許さないフィールドを作りたいです.Start()内で初期化したい理由は,Start()内で取得した他の値を使って初期化したいからです.
自分の書いたコードを他者がメンテナンスする場合を考えると,コメントで「このフィールドはStart()以外でset禁止」と書いてもよいのですが,もしコードで表現できるならその方がよいと考えています.
問題点
フィールドをreadonlyで宣言すると,MonoBehaviourを継承したクラスはコンストラクタを使えないため,宣言時にしか初期化できません.
ネットで調べた結果
Unity Answersに以下のような投稿があったのですが,ベストアンサーが何を言っているのかわかりません.readonlyは忘れろ,というところまではわかるのですが...
readonly C# keyword not so usefull in Unity
他の回答はコードが例示されているため理解できたのですが,それら以上にスマートな方法があるでしょうか.
回答4件
あなたの回答
tips
プレビュー