我正在为 Unity 构建一个基于节点的网格图形,这个图形既可以在编辑器中运行,也可以在运行时运行。最近 2-3 周,我重构了属性来源系统并为其赋予了合适的语义。当创建新顶点(平面切割、布尔运算、生成)时,系统现在以更智能的方式推导它们的属性值,同样适用于自定义用户定义的属性。属性来源本身并不是新东西,但实现现在在所有网格域中都保持一致。经过多次迭代后,我最终转向了 Roslyn 源代码生成器,这使整个过程变得更加可维护。同时统一网格域,我还优化了网格计算算法和属性处理。视频展示了一个网格处理链:导入 Unity 网格,重新计算法线,应用随机顶点颜色(仅用于演示中间值的生存),然后用场景中的 Transform 驱动的平面切割它。切割后的部分标记为正/负帽和主。然后将两半合并回一个单独的网格,应用两个更多的 Transform,最后将帽子用属性颜色着色,红色为正,绿色为负。结果直接传递到运行时,可以在构建时使用来处理游戏中的网格。