unity3d - 我将如何为 2 个不同的商店管理 2 个不同的构建,这需要在它们之间进行一些代码更改

标签 unity3d

假设我想在 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/

相关文章:

c# - 统一激活和停用游戏对象

c# - 如何在游戏对象上动态设置随机 Material

c# - unity : Remove The selected object from random.范围

c# - “Identifier Expected”错误?

c# - 防止静态属性在异步函数初始化之前被访问

c# - Photon Server新手问题

c# - Unity3D Player 运动脚本

android - Unity3D Canvas 。我怎样才能得到相机?

firebase - Unity3d 与 Firebase : Can't Start Coroutine

缺少 AndroidManifest.xml 尝试重新导入插件