我们遇到了一个奇怪的问题,看起来像是一个Unity bug,而Dotfuscator社区混淆了DLL的结果。这个问题与这里描述的内容有关:https://forum.unity.com/threads/what-does-this-error-mean-exactly.122136/
从本质上讲,问题在于如下代码:
public class MyParentClass : MonoBehavior {
private int foo;
}
public class MyChildClass : MyParentClass {
private int bar;
}
会被混淆
public class A : MonoBehavior {
private int a;
}
public class B : A {
private int a;
}
虽然这是完全有效的C#代码,但它混淆了Unity,Unity试图序列化所有字段,即使它们是私有的并且没有标记为Serializable
,并且它会吐出“同一字段名称在类或其父类中序列化多个名称。这不受支持”错误。它不会阻止项目运行,但它仍然很混乱。
简单的解决方案是防止重命名这些字段,但我们希望避免它(毕竟这是使用混淆的目的...)。有没有一种方法可以配置dotfuscator,例如,防止它在继承层次结构中重用相同的字段名称?
1条答案
按热度按时间k5ifujac1#
这似乎是Unity Burst的一个错误。它已在Burst 1.8.4中修复
https://docs.unity3d.com/Packages/com.unity.burst@1.8/changelog/CHANGELOG.html