バグの再現方法
version: 2021.3.21f1
上のパッケージをインストールして,適当なInterfaceをFieldにもつクラスを生やして,Inspectorで設定する
(自分の場合はScriptableObjectだったがMonoBehaviourでも再現すると思う)
namespace Hoge
{
public class Fuga : ScriptableObject
{
[SerializeReference, SubclassSelector]
public Interface i;
}
public interface Interface { }
public class ImplA : Interface { }
public class ImplB : Interface { }
}
namespaceを変更する
namespace HogeHoge
{
public class Fuga : ScriptableObject
{
[SerializeReference, SubclassSelector]
public Interface i;
}
public interface Interface { }
public class ImplA : Interface { }
public class ImplB : Interface { }
}
参照が変わるため,アタッチが外れnullになるので,再度Inspectorで設定
Playするとなぜかi
がnullになる(何度繰り返しても)
解決策
一回,Attribute([SerializeReference, SubclassSelector]
)を消して読み込み直す
その後,Attributeを付け直す