为什么六边形瓦片是由StaticMesh组成的?
ProceduralMesh并不总是需要的
该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。
六边形图块也可以在运行时直接计算并制作成 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 的方向。