← 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;

StaticMeshが似合う場合

  • タイルの外観が実行中に変わりません。
  • エディタで作成したMeshとLODを再利用します。
  • 衝突とマテリアルスロットを資産で管理する。
  • 同じメッシュを複数のタイルが共有する。

ProceduralMeshは、地形自体が変形したり、ユーザー入力で図形を生成するときに意味があります。 固定六角形を単にサイズと色だけ変更するときは、StaticMeshがより単純です。

視覚状態とゲームルールは分離する

bool bIsMovementRangeHighlighted = false;
bool bIsAttackRangeHighlighted = false;

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

可用性はGridルールによって決定され、タイルは結果に合わせてMaterialの色を変更します。 Mesh ComponentがあるとタイルActorの中にパス探索まで入れる必要はない。

タイル数がはるかに多くなると、ActorとComponent個数自体が負担になることがある。 その段階では、InstancedStaticMeshまたはHierarchicalInstancedStaticMeshで囲む方向を検討する必要があります。