vovgou / loxodon-framework

An MVVM & Databinding framework that can use C# and Lua to develop games
MIT License
1.86k stars 363 forks source link

Loxodon.Framework.Views.TextMeshPro.GenericParameters在绑定引用类型时有概率崩溃 #43

Closed FirmianaMarsili closed 3 weeks ago

FirmianaMarsili commented 3 weeks ago

问题描述:

在视图中对GenericParameters进行绑定时,会因为访问引用类型时为空而导致unity出现崩溃

复现过程:

末尾附件有一个简单的demo,或者声名任意一个GenericParameters<p1, p2, etc.>只需要泛型中包含任意引用类型即可。

当前的行为:

点击运行demo进行绑定视图,有大概率会直接崩溃。

期待的行为:

1.视图绑定时不会因为空值而崩溃 2.FormattableTextMeshProUGUI中对于m_Format字段添加TextArea标签 3.对于FormattableTextMeshProUGUI类型添加一个右键菜单MenuItem("GameObject/UI/Text - FormattableTextMeshProUGUI")

屏幕截图(这个是Demo的调用堆栈):

crash

环境:

Windows 10 22H2 Unity 2021.3.14f1

Demo:

2021_3_a.zip

vovgou commented 3 weeks ago

这个版本不应该有这个崩溃的问题啊。我使用unity2021.3.37测试你的demo,也没有发生崩溃。以前确实有这个崩溃,原因见下图英文描述。

在UnityEditor中,当参数类型为ReadOnlySpan时,第一次调用是正确的,第二次调用时,实际调用的是void Format(string format, object value, StringBuilder builder)函数,这样会导致UnityEditor崩溃。

你在QQ群里吗?在群里你呼我一下,群里聊。

image

FirmianaMarsili commented 3 weeks ago

不在qq群,没问题就行,可能是我电脑问题。我将之前写的一个同样的功能集成了进来替换掉了