我如何管理 2 个不同商店的 2 个不同版本,这需要在它们之间进行一些代码更改

Les*_*tat 3 unity-game-engine

假设我想在 Steam 和 Epic Games 上发布我的游戏。两者都有一个包含某些服务(例如匹配)的 SDK。

我不想制作两个项目并基本上维护它们只是为了能够实现这一目标。如何根据我正在构建的版本(Steam 版本或 Epic Games 版本)激活/停用某些代码。我读到了 #if 指令,但这些指令似乎仅在检查构建目标平台(Android 等)时才起作用。

  • 我可以利用这些指令来实现我的目标吗?
  • 我可以包含两个 SDK 并通过代码检查它是 Steam 还是 Epic 版本,并以某种方式相应地初始化正确的版本吗?

Tom*_*zak 5

您可以添加和定义您自己的预处理器指令#if STEAM#if EPIC.

#if STEAM
  //do something with STEAM API
#elif EPIC
  //do something with EPIC API
#endif
Run Code Online (Sandbox Code Playgroud)

为此,您需要打开“Project Settings->Player->Script Compilation->Scirpting Define Symbols”,您可以在其中找到 Unity 将用于编译项目的所有自定义预处理器指令的列表。

如果您希望在构建过程中自动执行相同的操作,您可以设置PlayerSettings.SetScriptingDefineSymbolsForGroup

PlayerSettings.SetScriptingDefineSymbolsForGroup
(BuildTargetGroup.Standalone, "STEAM");
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此PlatformDependentCompilation

您可以通过Define Constraints对要包含在项目中的所有插件和 DLL 执行相同的操作