[Addressable] build machineでなぜか[SerializeField]の値がNoneになっている

トラブルシューティング

Unity2019.3.0f1, 2019.3.0f5 win standalone

開発機では参照は正常です。build machineでgit pullしたprefabを見ると[SerializeField]の値がNone、つまり初期状態になっていました。不思議な事にOpenすると値は入っていました

対処法

開発機でPrefab参照を再設定し、保存しました。

差分を見ると,m_Nameが別名に変わっていました。おそらく一番最初にPrefabを作成したときは{OldName}.prefab。そのあとでリネームして{NewName}.prefabにしたけど保存されなかったのではないでしょうか。Sceneに置いていたprefabなので、prefab参照は生きているけど、prefab内コンポーネントの参照はイカれたとかでしょうか

補足1

修正方法分かりにくいので画像付きで説明

このときはItemWeaponMeleeKeyというメンバ変数を追加しました。ソースコードは更新されてもprefabは更新されていませんでした。そのままgitに保存してもprefabのデータは不正です。(開発機ではなぜか正常

そのためいったんprefabを開いてaaaとか適当な値で更新をかけてやります。そのあと正しいデータをいれて再度更新をかけてやります。

これでgitにpushすればbuild machineでも正常です。

補足2

git側が正常なのにbuild machineだけ変という場合は、

  • 該当prefabを削除した後sourceTreeでrevert
  • 該当パラメータを手動で再入力(sourceTreeは同じファイルえですみたいな表記