有什么方法可以在 Unity 中检查 Google Mobile Games 是否已使用自定义全局定义导入?
我找不到有关自定义全局定义如何工作的解释。
我希望它是这样的:
#if Admob
//Complete code here (Disabled when Google Play Games isn't imported
#endif
或者还有其他人可以做到这一点吗?
最佳答案
It is possible to add to the built-in selection of #define directives by supplying your own. Open the Other Settings panel of the Player Settings and navigate to the Scripting Define Symbols text box.
如果此处未定义,您应该手动添加自定义定义,并使用 ;
将其与其他定义分开。然后您应该能够使用您的自定义定义,就像您在问题中指出的那样。
您可能还想通过以下代码向 Unity3D 编辑器添加额外功能来自动设置和取消设置自定义定义。这将在 Unity 的编辑器中创建一个菜单条目,以便于访问。当您需要频繁更改特定的自定义定义时,这非常有用。
这段代码的想法不属于我,其来源在 this link .
例如对于自定义定义“GOOGLE_MOBILE_GAMES”,您应该编写如下内容:
public class ToggleDefineSymbol : Editor
{
[MenuItem("Tools/Set GOOGLE_MOBILE_GAMES")]
public static void Set_GOOGLE_MOBILE_GAMES()
{
string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(
BuildTargetGroup.Standalone);
if (!symbols.Contains("GOOGLE_MOBILE_GAMES"))
{
PlayerSettings.SetScriptingDefineSymbolsForGroup(
BuildTargetGroup.Standalone, symbols + ";GOOGLE_MOBILE_GAMES");
}
}
[MenuItem("Tools/Unset GOOGLE_MOBILE_GAMES")]
public static void Unset_GOOGLE_MOBILE_GAMES()
{
string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(
BuildTargetGroup.Standalone);
if (symbols.Contains("GOOGLE_MOBILE_GAMES"))
{
symbols = symbols.Replace(";GOOGLE_MOBILE_GAMES", "");
PlayerSettings.SetScriptingDefineSymbolsForGroup(
BuildTargetGroup.Standalone, symbols);
}
}
}
将此脚本放入 Assets
文件夹中名为 Editor
的文件夹中。
您可能还想根据需要更改 BuildTargetGroup
参数。如果您需要此功能进行进一步的自定义定义,只需复制上面的函数,将“GOOGLE_MOBILE_GAMES”替换为您需要的任何自定义定义。
关于c# - 从源代码访问 Unity3D 的自定义全局定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52456329/