返回 导航

UE5

hangge.com

UE5 - 使用构造脚本进行程序化生成教程3(用实例化静态网格体组件批量生成实例)

作者:hangge | 2025-09-12 08:25
    我在之前的文章中演示了如何在构造脚本中生成立方体方阵(点击查看),当时生成的立方体数量、间距以及使用的静态网格体都是再构造脚本中固定写死的。本文做个改进,使用时我们能够指定所使用的静态网格体、行数以及每行有多少实例。

三、生成可配置的静态网格体方阵

1,实现步骤

(1)在"内容浏览器”面板中创建一个“Actor”类蓝图并命名为 BP_ProceduralMeshes,然后双击打开。

(2)在“我的蓝图”面板中创建一个名为 StaticMeshVar 的变量。同时进行如下设置:
  • 单击“变量类型”下三角创建一个变量来引用静态网格体按钮,在打开的列表中搜索“静态网格体”,将光标悬停在“静态网格体”选项上,然后在子列表中选择“对象引用”选项。
  • 在“细节”面板中勾选“可编辑实例” 复选框,以便我们可以在关卡编辑器中更改实例使用的静态网格体。
  • 编译蓝图。在静态网格体的“默认值” 类别中,选择 SM_Chair 静态网格体。

(3)接着创建如下变量并设置默认值,同时所有变量都必须设置为“可编辑实例”。
  • InstancesPerRow:整数,默认值为 1 
  • NumberOfRows:整数,默认值为 1 .
  • SpaceBetweenlnstances:浮点数,默认值为 100.0 
  • SpaceBetweenRows:浮点数,默认值为 150.0 

(4)然后,我们在“组件”面板中单击“添加”按钮, 在打开的列表框中搜索“实例”,在列表中选择“实例化静态网格体组件”选项。
提示:
  • 实例化静态网格体组件可以将多个相同的静态网格合并在一个组件中渲染。它的每个实例只记录自身的变换(位置/旋转/缩放),共享同一材质、碰撞等属性。如此一来,引擎可以通过一次渲染调用同时绘制大量相同网格实例,大幅减少绘制调用次数(draw calls),从而提升渲染性能
  • 层次实例静态网格体组件与实例静态网格体类似,在网格体具有详细程度(LOD)时很有用。


(5)最后切换至 Construction Script 选项卡,在“我的蓝图”面板中,创建名为 InstanceLocationX 的“浮点”类型的局部变量。

(6)然后添加如下完整逻辑。

2,运行测试

(1)从内容浏览器中拖动 BP_ProceduralMeshes 并放到关卡中,切换至关卡编辑器的“细节”面板,在“默认”类别中设置 Instances Per Row6, 设置 Number Of Rows5
  • 可用看到程序化生成 5 排,每排 6 把椅子。

(2)我们可以使用相同的 BP_ProceduralMeshes 实例生成种植园。切换到关卡编辑器的“细节”面板,在“默认”类别中将 Static Mesh Var 更改为 SM_Bush,并将 Space Between Instances 设置为 200.0Space Between Rows 设置为 200.0
  • 使用新参数程序化生成的结果如下:
评论

全部评论(0)

回到顶部