Help us understand the problem. What is going on with this article?

Galaxy端末系におけるSerializationException

More than 5 years have passed since last update.
I/Unity﹕ SerializationException: Field "Test" not found in class HogeFuga

Galaxy系端末でのみ上記のようにシリアライズのExceptionが発生したのでメモ

そもそもリフレクションとか使って色々あってInterfaceを実装したクラスをシリアライズしたかった。
そのため、パブリックなfieldではなくpropertyをシリアライズの対象とする必要があった。
その際、下記のようなコードだと端末によってExceptionが発生したのであった。。。

解決方法としては自動プロパティ使えよってことなんだけど、そもそもなんで自動プロパティ使わなかったかは・・・忘れたw(そもそもC#にまだ慣れてない)

他の解決方法としてDataContracやDataMember系のAttribute使うとイケそうなんだけどUnityとMonoのVersionの関係上これは使えそうになかった。

ダメだったコード

C#
[System.Serializable()]
public class HogeFuga : IFuga
{
  private int test;
  public int Test { get {return this.test;} set {this.test = value;} }
}

public interface IFuga
{
  int Test { get; set; }
}

問題なく動作したコード

C#
[System.Serializable()]
public class HogeFuga : IFuga
{
  public int Test { get; set; }
}

public interface IFuga
{
  int Test { get; set; }
}

参考

YaaS
サーバサイドからWebアプリケーションからゲーム開発までなんでもやりたいやりたがり。でもアホなのでメモっとかないとすぐ忘れます。 今はUnityではぁはぁいってる。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away