在Unity3D中为条件属性定义符号

Jen*_*nix 5 c# mono conditional unity-game-engine

[EDIT] 对于由于某种原因浏览此页面的人,现在情况已经改变。从Unity 2017开始,无论文件位置如何,都必须在两个文件(被调用方和调用方)中定义相同的符号。以下是Unity 2017之前的问题。我将保留此记录。


在标准C#中,如果要调用具有条件属性的方法,则必须在方法为CALLED的文件中为其定义符号。但是在Unity中,这似乎有所不同。仅当我将行放在方法EXISTS的文件中时,它才起作用。假设这样的Unity项目中有两个脚本文件。

ClassForMySymbol.cs

class ClassForMySymbol {
    [System.Diagnostics.Conditional("MY_SYMBOL")]
    public static void Print() {
        Debug.Log ("This method is called.");
    }
}
Run Code Online (Sandbox Code Playgroud)

Test.cs

public class Test : MonoBehaviour {
    void Start() {
        ClassForMySymbol.Print();
    }
}
Run Code Online (Sandbox Code Playgroud)

这仅在我在ClassForMySymbol.cs中定义“ MY_SYMBOL” 而不在Test.cs中定义时有效

我不知道发生了什么事。这正常吗?我在这里想念什么?

PS。这个问题与#define的范围或定义全局符号无关。