c# - 我可以在 Unity 中使用预处理器指令来区分调试和发布模式吗
问题描述
我想用 Unity 创建一个基于关卡的游戏。假设您在完成上一个级别后解锁了下一个级别。在您找到某些物品之前,可能会锁定某些级别。
您将如何测试游戏的特定部分?假设世界 3 级别 8 包含一个带有洞穴的部分,玩家必须在其中跳过多个障碍物。你将如何在不重新启动关卡的情况下一遍又一遍地测试这个洞穴场景?我的意思不是用单元测试来测试你的应用程序。也许您想尝试特定的机制,并且特定级别中的特定位置最适合您的测试。
当然,您可以准备一个保存游戏或添加一些作弊代码,例如“按 + 跳过此级别”,但我认为作弊代码将是最糟糕的主意,因为您必须在发布游戏之前删除所有这些行(以及每个下一个版本)。
使用 C# 和 Visual Studio 进行开发时,可以添加预处理器指令。游戏开发是否存在类似的东西,尤其是 Unity?
解决方案
是的。您可以在Scripting Define Symbols中定义它们,可从以下位置访问:
编辑 -> 项目设置 -> 播放器 -> 其他设置 -> 脚本定义符号
从手册中,您还可以找到已经在统一中实现的最有用的指令。
它们主要用于依赖于平台的编译,但它们也可用于区分编辑器和实际应用程序。
例如#if UNITY_EDITOR
,仅当您在统一编辑器中时才会运行代码。
推荐阅读
- linux - 项目错误:QT 中的未知模块:数据可视化
- reactjs - 使用 window.location.href 在反应中重定向页面时,Axios 无法正常工作
- javascript - 为什么从循环内部调用的回调处理程序没有从调用者那里获取适当的变量?
- javascript - 如何在 Netlify lambda 函数中从 Hugo 网站上的 Google Calendar API 获取请求
- sql - 使用 PASSWORD_VERIFY_FUNCTION 更改配置文件返回无效的函数名称
- reactjs - 使用 Material UI 进行主题嵌套
- java - Java 等价于 C++ Botan 函数调用
- r - 文件处理时间长
- mysql - AWS Aurora Auto Scaling 导致 mysqld_stmt_execute 的参数不正确
- angular - Angular7 性能