假设我想在 Steam 和 Epic Games 上发布我的游戏。两者都有一个包含某些服务(例如配对)的 SDK。
我不想制作 2 个项目并基本上维护它们只是为了能够实现这一点。如何根据我正在构建的版本(Steam 版本或 Epic Games 版本)激活/停用某些代码。我阅读了有关 #if 指令的信息,但这些指令似乎仅在检查构建目标平台(Android 等)时有效。
- 我可以利用这些指令来实现我的目标吗?
- 我能否包含这两个 sdk 并通过代码检查它是 Steam 还是 Epic 版本,并以某种方式相应地初始化正确的版本?
最佳答案
您可以添加和定义自己的预处理器指令 #if STEAM
或 #if EPIC
。
#if STEAM
//do something with STEAM API
#elif EPIC
//do something with EPIC API
#endif
为此,您需要打开“项目设置->播放器->脚本编译->Scirpting 定义符号”,您可以在其中找到 Unity 将用于编译您的项目的所有自定义预处理器指令的列表。
如果您希望在构建过程中自动执行相同的操作,您可以设置 PlayerSettings.SetScriptingDefineSymbolsForGroup
PlayerSettings.SetScriptingDefineSymbolsForGroup
(BuildTargetGroup.Standalone, "STEAM");
有关更多信息,请参阅此 PlatformDependentCompilation
您可以通过 Define Constraints 对所有要包含在项目中的插件和 DLL 执行相同的操作。
关于unity3d - 我将如何为 2 个不同的商店管理 2 个不同的构建,这需要在它们之间进行一些代码更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70592507/