当前位置:   article > 正文

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

nullreferenceexception: serializedobject of serializedproperty has been disp

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

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

笔者的示例代码1:

  1. public class L1_GUI : MonoBehaviour
  2. {
  3.     public GUIStyle Mystyle = new GUIStyle();
  4.     private void OnGUI()
  5.     {
  6.         Mystyle.fontSize = 12;
  7.         
  8.         // 显示文字
  9.         GUI.Label(new Rect(0, 0, 20, 20), "This.", Mystyle);
  10.     }
  11. }

示例代码2:

  1. public class L1_GUI : MonoBehaviour
  2. {
  3. public GUIStyle Mystyle;
  4. }

以上代码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 版本,错误不再产生。

执行正常的打印信息:


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/100635
推荐阅读
相关标签
  

闽ICP备14008679号