Unity中的GUIStyle错误:SerializedObject of SerializedProperty has been Disposed.

笔者在GUI练习中发现此问题。

如果读者也遇到这个问题,很可能与 Unity 或相关库的版本不兼容或其他问题有关。

笔者的示例代码1:

public class L1_GUI : MonoBehaviour
{
    public GUIStyle Mystyle = new GUIStyle();

    private void OnGUI()
    {
        Mystyle.fontSize = 12;
        
        // 显示文字
        GUI.Label(new Rect(0, 0, 20, 20), "This.", Mystyle);
    }
}

示例代码2:

public class L1_GUI : MonoBehaviour
{
    public GUIStyle Mystyle;
}

以上代码1和代码2,均在 Unity编辑器 2022.3.0f1c1 版本上循环打印

        NullReferenceException: SerializedObject of SerializedProperty has been Disposed. 错误。

        无论是否在OnGUI函数中使用这个参数Mystyle,都会产生NullReferenceException错误。并且右侧的GUIStyle面板是残缺的(无法实时刷新此GUIStyle的各种参数)

该错误的解释大致是:

        NullReferenceException 通常表示对象引用为空。在这种情况下,SerializedObject 对象已经 Disposed,因此在使用它时会导致 NullReferenceException 异常。通常情况下,SerializedObject 对象在使用完毕后应该被显式地 Dispose,在这个情景下应该是被异常地提前Dispose了。

一番折腾后,切换至 Unity编辑器 2021.3.19f1c1 版本,错误不再产生。

执行正常的打印信息:


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谦谦青岫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值