【问题标题】:Unity. Some fields go to null on Play统一。某些字段在 Play 上为空
【发布时间】:2021-07-21 12:56:59
【问题描述】:

我指的是那些字段。

[SerializeField]
public Type gameStateType;

[SerializeField]
public IGameStateParams gameStateParams;

我使用编辑器方法来设置这些字段,但是,当点击 Play 时,它们变为空。 我可以处理 Type(我的系统类型都支持存储在字典中,所以我可以使用它们的 ID 来获取 Type),但不能处理 IWhatever 实现的实例。 能解决吗?

如果没有,有没有办法在场景游戏对象中存储任何 IWhatever 实现的实例?

【问题讨论】:

    标签: c# unity3d unity-editor


    【解决方案1】:

    这些类型(Type 和接口)不是可序列化 ..所以虽然您当然可以使用编辑器脚本来传递值,但这些字段不会被序列化 => 不保存 => 不在运行时初始化。

    当您进入 PlayMode 时,场景中的所有对象都会重新加载 => 从头开始​​反序列化 => 因为您的值从未被序列化,所以它们也不会被反序列化。

    Script Serialization -> Serialization Rules

    【讨论】:

    • 有没有办法创建任何类实例,该实例将始终存在并且可以从任何地方访问,直到直接调用 dispose?我可以在那里存储一些额外的数据。
    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    相关资源
    最近更新 更多