我经常会回到Unity系统里,花费超过自己希望的时间去寻找相关的模型、预设、材料和文件夹。甚至不确定它们之间的连接。以前我会在Trello里写类似这样的笔记:“修复门上的触发器——客栈场景,二楼,办公室门”然后花费太多时间去确定我指的是哪个门,在哪个场景,哪个脚本被附加上去。 我希望能够在我的对象上直接创建这样的笔记,快速创建并且容易找到。
我以前会在外部工具中写类似这样的笔记:“客栈场景,二楼,办公室门上的门有一个触发器需要修复”,而不是直接在Unity编辑器中标记对象。所以我决定创建一个工具,允许我直接在GameObject、组件、预设、资产和文件夹上添加上下文笔记。
最初我想主要使用它来添加基本信息,如:“这个管理器处理X和Y”或者“这个敌人预设的运动有bug”或者“修饰这个,添加一些尘埃粒子到跳跃动画”。我添加了笔记标签,显示在Hierarchy、项目窗口和检查器中,所以我可以立即看到哪些对象有文档,活跃bug,需要改进或者需要小心地改变精细调节的值。为了跟踪所有的信息,我添加了一个笔记feed窗口,允许我过滤为活跃bug,开放工作,文档和更多。许多笔记在一段时间后会被删除——bug和特性笔记大部分。但是其他笔记会被保留并积累,所以我添加了一个过滤器,显示只有当前打开的场景中的笔记。对于快速看到哪些对象在场景中需要关注非常有用。
使用它一段时间后,我意识到还有更多可以做的事情。由于笔记已经生活在Unity编辑器中,所以它变得合理地让它们引用相关的对象、资产和文件夹。现在当我添加一个文档笔记到敌人生成管理器时,我可以引用要生成的预设文件夹,预设本身,生成时间数据的文件夹等等。每次我想了解一个对象是如何工作的,我都会通过点击笔记上的引用来找到所有相关的部分。没有必要在项目文件夹中寻找。
使用引用最终让我建立了一个Pinboard窗口。单击一个按钮,我可以创建一个工作区,包含一个笔记所引用的所有资产,并且可以在工作时保持可用。
这将打开什么。 我可以添加一个笔记到我的盗贼文件夹里,称为“创建盗贼营地”。这个笔记说:“当创建盗贼营地和定居点时,只使用以下资产保持游戏的一致性”。它引用了建筑物,NPC,装饰和材料变体。一个按钮创建一个Pinboard页面,包含所有这些资产。我可以直接从它拖拽,永远不用在文件夹中寻找或者担心是否使用了正确的资产。一旦我完成了盗贼营地,我可以删除该页面。下一个任务可能是添加一个笔记到骑士文件夹里,称为“创建骑士营地”或“创建骑士堡垒”,并且引用了简单的营地建筑或石墙和塔。
添加一个新武器涉及到多个系统:艺术作品,武器数据资产,武器ID,解锁表,新弹道预设,爆炸效果,玩家视觉和玩家行为。每次我添加新武器时,我都会花费一段时间去确定整个过程。所以我添加了一个文档笔记到武器文件夹里,引用了所有连接的部分。现在我打开笔记,阅读步骤,添加Pinboard的引用,我就可以在几秒钟内就开始工作了。
我还在不断发现更多的用例。但是最有用的笔记是那些我以前从来没有想过放到外部工具里的:
- Rigidbody组件上的笔记:“[警告] 这个Rigidbody必须使用连续动态,不然它不会与快速移动的弹道相碰撞”
- Scriptable Asset上的笔记: “在第五波中减少敌人数量从35到25——玩家在测试中很困难”
- 玩家跳跃脚本上的笔记:“跳跃力修复为25,不要降低。需要某些跳跃”
特定岩石的bug笔记给你的设计师或你将来的自己:“这个岩石是错误放置的——漂浮”
模板文件夹上的笔记:“[警告] 不要使用这个文件夹里的材料。它们应该只用于测试视觉。你可以调整值,一旦满意,就将它们复制到引用文件夹中,然后在实际游戏中使用复制品”
在编辑器中直接拥有这样的信息——可见于你检查一个对象时——希望可以防止未来的我和团队成员们犯错误,并且不小心打破东西。无论如何,这比外部文档或依赖自己的记忆是一个巨大的改进。
最惊人的发现是有些笔记不再是笔记,而是项目知识。
对于任何疑问的人:笔记是存储为JSON文件的,内置在项目中,独立于它们所附着的对象。它们通过Unity GUID链接,所以重命名和移动对象不会打破连接。
我很好奇——这个是你第一次看到的吗,还是以前就见过类似的事情?我知道有些人使用info-components来附加基本文本到场景对象。另外:你是否经常在寻找同样的文件夹,还是你已经找到了解决方案,比如使用收藏工具?
评论 (0)