← SEARCHABLE ARCHIVE
Unreal Engine · 2026-07-12

为什么六边形瓦片是由StaticMesh组成的?

ProceduralMesh并不总是需要的

INTERACTIVE READING MODE →

该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。

六边形图块也可以在运行时直接计算并制作成 ProceduralMesh。 但是,如果形状是固定的,则没有理由每次都创建顶点和索引。

ProjectTB 显示图块UStaticMeshComponent改为基地。

UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
TObjectPtr<UStaticMeshComponent> TileMesh;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
TObjectPtr<UStaticMeshComponent> TileOutlineMesh;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
TObjectPtr<UStaticMeshComponent> CenterIconMeshComponent;

何时适合静态网格物体

  • 运行时瓷砖形状不会改变。
  • 重复使用在编辑器中创建的网格和 LOD。
  • 冲突和材料槽在资产中进行管理。
  • 多个图块共享相同的网格。

当地形本身发生变换或通过用户输入创建形状时,ProceduralMesh 才有意义。 当您只需更改固定六边形的大小和颜色时,静态网格体会更简单。

独立的视觉状态和游戏规则

bool bIsMovementRangeHighlighted = false;
bool bIsAttackRangeHighlighted = false;

void SetRangeHighlights(
    bool bMovement,
    bool bAttack,
    FLinearColor MovementColor,
    FLinearColor AttackColor
);

网格规则决定是否可以移动,图块根据结果改变其材质颜色。 仅仅因为有 Mesh Component,就不需要在tile Actor 中包含路径导航。

如果图块的数量变得很大,那么 Actor 和组件的数量本身就会成为一种负担。 在此阶段,应审查绑定到 InstancedStaticMesh 或 HierarchicalInstancedStaticMesh 的方向。