Using scripting #if define symbols in DLLs

Hi,

I created a new Debug DLL and imported it into the Plugins folder. Everything works fine except that scripting define symbols which are defined in Unity aren’t picked up inside the DLL. The DLL code contains this:

public static class Debug
{
	public static void Check()
	{
#if !DEBUG_OUTPUT_OFF
		UnityEngine.Debug.Log("Debug output is ON");
#else
		UnityEngine.Debug.Log("Debug output is OFF");
#endif
	}
}

In Unity, I’ve set DEBUG_OUTPUT_OFF for the current build platform, but calling this:

		Debug.Check();

#if DEBUG_OUTPUT_OFF
		Debug.Log("Output seems to be off in Unity");
#endif

…produces this output:

Debug output is ON

Output seems to be off in Unity

So is there a way to make Unity’s scripting define symbols available to DLL code?

The defines are compile time things. Once you compile your code, they don’t exist, and the code that they filter out doesn’t exist.

Your plugin dlls are already compiled outside of Unity. That means they don’t and can’t know anything about compile conditions you’ve set up.

What are you trying to do?