条件符号未按预期运行

Conditional Symbols not acting as intended

我正在开发一个 c# monogame 游戏,我的代码库由我的解决方案中的 3 个项目组成。

  1. 包含我所有游戏引擎代码的共享便携式库。
  2. 我所有游戏功能的 monogame opengl 跨平台项目
  3. 我的编辑器的 monogame opengl 跨平台项目

我的目标是能够在我的引擎代码(项目 1.)中使用条件编译符号来拆分引擎代码,以允许我确定当前应用程序是游戏本身,还是我当前在编辑器(即 EDITOR 或 GAME,因此我可以使用 #if EDITOR 或 #if GAME 等)。我不想在实际代码中使用实例变量或静态变量,因为我想在实际游戏项目中隐藏某些内容。

我的主要问题是,如果我在我的编辑器项目上定义条件符号,它实际上不会在我的引擎代码中定义,因为编辑器引用了主游戏代码,而主游戏代码引用了可移植引擎代码它。我可以更改游戏代码项目 (1.) 中的条件符号,这些符号将反映在引擎代码中。

我已经尝试在编辑器项目本身中直接引用可移植引擎代码,但是由于在游戏代码项目中也引用了它,所以出现了一系列冲突错误。

解决此问题的最佳做法是什么?

这是我当前的参考设置

您可以为您的编辑器和游戏创建 2 个配置。

Build > Configuration Manager...

配置不同的符号和输出位置。

然后使用批量构建分别构建 2 个解决方案。

Build > Batch Build...