Tutti Lab

元シリコンバレー在住のおっさん技術者、モバイルVRアプリ開発に挑戦中

getterのケアレスミスでUnityクラッシュ

以下のコードですが、

private int _curNum;
public int curNum {
  get {
    return curNum;
  }
  set {
    _curNum = value;
  }
}

正しくは、「return _curNum;」としなければなりません。
なお、上記の間違いコードを実行すると、Unityがクラッシュします。
f:id:tuti107:20170306192256p:plain
スタックがえらいことになっています。循環参照をしまくったためでしょうね。
この不具合の検証をさらに困難にさせるのが、このgetterにアクセスしなくても、例えば本ゲッターを持つクラスの別の変数にアクセスしても落ちます(ただ、落ちない変数もある・・謎・・)。まさかgetterのミスとは気づかず、小一時間解析に要してしまいました。