【问题标题】:Can I use pre processor directives in Unity to differentiate debug and release mode我可以在 Unity 中使用预处理器指令来区分调试和发布模式吗
【发布时间】:2019-08-16 17:59:44
【问题描述】:

我想用 Unity 创建一个基于关卡的游戏。假设您在完成上一个级别后解锁了下一个级别。在你找到一些物品之前,可能有些关卡会被锁定。

您将如何测试游戏的特定部分?假设世界 3 级别 8 包含一个带有洞穴的部分,玩家必须在其中跳过多个障碍物。你将如何在不重新启动关卡的情况下一遍又一遍地测试这个洞穴场景?我的意思不是用单元测试来测试你的应用程序。也许您想尝试特定的机制,并且特定关卡中的特定地点最适合您的测试。

当然,您可以准备一个保存游戏或添加一些作弊代码,例如“按 + 跳过此级别”,但我认为作弊代码是最糟糕的主意,因为您必须在发布游戏之前删除所有这些行(以及每个下一个版本)。

使用 C# 和 Visual Studio 进行开发时,可以添加 preprocessor-directives。游戏开发是否存在类似的东西,尤其是 Unity?

【问题讨论】:

  • 只有在运行调试模式时才允许作弊。或者比这更好,当你处于调试模式时允许打开一个作弊控制台,然后你可以从那里运行多个作弊
  • 所以你认为我应该使用这个? docs.unity3d.com/ScriptReference/Application-isEditor.html
  • 我不使用unity,所以我不知道这是否好,但听起来不错

标签: c# unity3d


【解决方案1】:

是的。您可以在 Scripting Define Symbols 中定义它们,可从以下位置访问:

编辑 -> 项目设置 -> 播放器 -> 其他设置 -> 脚本定义符号

manual 中,您还可以找到已经在统一中实现的最有用的指令。

它们主要用于依赖于平台的编译,但它们也可用于区分编辑器和实际应用程序。

例如,#if UNITY_EDITOR 将在您使用统一编辑器时运行代码。

【讨论】:

  • 我的问题与 OP 的标题相同,“我可以在 Unity 中使用预处理器指令来区分 [In-Editor] 调试和 [In-Editor] 发布模式”。作为一名代码专家,我通常希望在 VS 调试会话中出现“Gameobject X Awake”的垃圾邮件,但我不希望设计人员为此烦恼。因此#if DEBUG,可惜,它不起作用。
  • 拥有 EDITOR_DEBUG 和 RELEASE_DEBUG 怎么样?因此,您可能仅将一个用于编辑器调试。 #if UNITY_EDITOR && EDITOR_DEBUG
猜你喜欢
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
相关资源
最近更新 更多