使用GitHub Copilot 和Unity的 5 个技巧

Unity 的 AI 工具现已推出 beta 版,我们看到人们对它的新功能感到非常兴奋,特别是编辑器内置的 AI 助手及其与流行开发者工具的集成。如果您是第一次体验测试版,可以在人工智能工具网页上了解更多信息。我们还制作了一系列视频操作指引,帮助您快速上手其核心功能。
我们与 Stacey Haffner 坐下来讨论了她如何使用GitHub Copilot 和Unity来优化她的游戏开发工作流程。Stacey 曾是微软的首席开发者倡导者,同时也是一位拥有十多年独立游戏开发经验的 YouTuber。她拥有.NET、Xbox和Unity等创作者技术领域的背景。除了为开发者发声之外,她还经营着自己的独立工作室,并每两周发布一次游戏开发教程。
让我们深入探讨一下。
提示1:利用上下文窗口,而不是对抗它。
“上下文窗口是人工智能在一个会话级别/会话次数中的工作记忆,它有容量限制。”根据所使用的底层模型,性能可能在达到极限之前就开始下降,因此随着会话级别/会话次数的进行,响应的准确性可能会降低。GitHub Copilot 可以通过压缩会话级别/会话次数来帮助您解决这个问题,但是如果您在底层模型已经开始降级之后触发压缩,则降级后的状态将成为您的新基线。因此,我建议从一开始就围绕这个限制来构建你的工作流程。”
“对于更复杂的功能,我会使用主聊天线程来协调这项工作。对于大型功能,我会让主线程将工作分解成若干个专注的小块,然后启动后台代理来处理每个小块。编码代理负责实现,验证代理负责审查,一旦审查通过,该循环就会重复进行,直到功能完成。每个代理都在各自的上下文中运行,因此主线程能够保持专注并持续更长时间地稳定运行。

提示 2:搭建项目环境
“ GitHub Copilot 底层模型通常是通用的,但您可以通过向项目中的 .github 文件夹添加配置文件来定制 Copilot 的行为。您可以添加三种主要文件类型,以帮助GitHub Copilot 了解您的项目和域名。
- 自定义指令是 Copilot 为每个会话级别/会话次数加载的始终存在的上下文,它定义了项目的基线。它们应该包括您偏好的编码规范、 Unity项目规范(例如, Unity引擎版本和渲染管线)、架构模式和一般偏好。这些规则适用于无论你在项目的哪个部分工作都应该始终成立的事情。
- 代理人是各个领域的专家角色,每个代理人都有自己专属的工具和说明。我有一些代理人专注于着色器、UI工具包、游戏系统等等。最简单的做法是选择与手头工作相匹配的代理人,但您可以通过在代理人之间添加交接来增加更多结构。
- 技能是模块化的、可重用的指令,只有在特定任务触发时才会加载。技能描述会在每次会话级别/会话次数中加载,以便模型知道何时调用它,但完整的详细信息只有在实际需要时才会加载。例如,我的 UI Toolkit 代理会根据需要调用用于样式设置、UXML 编写和相关任务的各项技能。这样可以保持模型在任务间的内存上下文高效运行。

提示 3:一个好的计划至关重要。
“计划模式是任何实施开始前的第一步。”当您使用 /plan 命令并附上您的具体指示时, GitHub Copilot 会分析您的代码库和请求,以便在编写任何一行代码之前规划出实现路径。
请务必尽可能详细地描述该功能或修复方案,然后请 Copilot 进行调查并提出问题。交流将帮助你更详细地思考用户体验和功能,这通常会发现一些极端情况。一旦该迭代完成,就让 AI 定义实现的总体框架,包括它使用的现有系统、需要创建的新类和方法,以及所有这些如何组合在一起。只有在这种情况下,你才能让它编写代码。”

提示 4:不要跳过代码审查
“人工智能生成的代码需要审查,尤其是那些会在项目中长期保留的代码。一旦实现版本返回,你应该像对待拉取请求一样仔细阅读它。
“在 VS Code 发布代理窗口之前,我尝试过几种不同的方法,现在我最常用的是代理窗口。我可以高亮显示特定代码,并使用 /Explain 命令让 AI 向我解释其功能,或者使用 /Review 命令让它点评它刚刚编写的代码。接下来,我会像在真正的拉取请求中一样,直接在差异中添加内联注释,然后将它们作为一个整体发送给人工智能进行迭代。”
“这个习惯很重要,因为它能使代码符合我的标准,并确保我对我的系统保持深刻的理解。”这些知识能帮助我在游戏开发过程中做出正确的设计决策。”

提示 5:利用人工智能作为私人导师
“您可以使用GitHub Copilot 为任何您想学习的Unity概念创建自定义操作指引。因为GitHub Copilot 可以读取你的项目,所以你可以让它根据你的游戏需求和你的技能水平来定制课程。
“我一直想学习着色器,所以我构建了一个Unity Shader Graph代理,它非常注重教学,并用它来制作用于战斗的地面目标叠加层。当我遇到不完全理解的概念时,我可以提问,只有在我准备好之后才能进行下一步。
“重要的是要通过一系列课程,逐步培养孩子的独立性。”例如,我要求它提供前两个着色器的指导教程。它引导我了解了那些陌生的节点和数学原理,让我真正理解了每个着色器的工作原理。我想自己编写第三个着色器,所以当我遇到困难时,我只是寻求提示而不是答案。它给了我几个指导性问题,帮助我确定了下一步该怎么做,于是我继续前进。到最后,我才真正理解了我所创造的是什么。

与 Stacey 深入探讨 AI 测试版访问权限
为了更深入地了解这些主题,Stacey 在她的YouTube 频道上分享了几个相关视频。Unity编辑器内置AI助手现已推出公开测试版。点击这里开始您的14天免费试用。
