大家好!

最近我完成了一款Unity的运行时形状系统,并想分享一下实现过程中的一些经验教训。

目标是支持可以在运行时切换布局的单位组:网格、环、螺旋、楔形、墙壁、路径、文本形状、泊松点布局等。同时,我也希望行为可以叠加,一个形状可以旋转、闪烁、跟随路径、添加噪音或变形为另一个布局而不需要重写整个控制器。

以下几点帮助了我:

- 将每个形状视为一个位置生成器,而不是运动逻辑

- 将行为与形状数据分开

- 使用加权混合进行形状之间的变形

- 提前制作编辑器预览,因为只有在游戏模式下调试形状会变得非常痛苦

- 保持自定义形状可能,因为游戏特定的布局会很快出现

- 建立演示场景围绕使用案例,而不是特性

最难的部分是保持API的灵活性而不使设置过于抽象。对于RTS/策略类的移动,设计师通常需要快速的预设,而程序员需要足够的钩子来从游戏代码驱动系统。

我很好奇其他开发者如何处理这种问题:

- 你会将形状保存为ScriptableObjects、纯C#类还是数据资产?

- 你如何结构叠加的运动行为?

- 对于变形,你更喜欢直接点到点匹配、最近邻匹配还是其他什么?