unity3d 防止dotfuscator重用父类中的字段名

pjngdqdw  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(197)

我们遇到了一个奇怪的问题,看起来像是一个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,例如,防止它在继承层次结构中重用相同的字段名称?

相关问题