ustaticmeshcomponent

UStaticMeshComponent

Unreal Engine - UStaticMeshComponent

🏛 定义

UStaticMeshComponent 是 Unreal Engine 中用于在场景中渲染 静态网格体(Static Mesh) 的核心组件。

它继承自 UPrimitiveComponent,不仅具备渲染功能,还支持碰撞、LOD、材质应用等。


🏛 类继承

继承关系如下:

UObject

└── UActorComponent

   └── USceneComponent

         └── UPrimitiveComponent

               └── UMeshComponent

                     └── UStaticMeshComponent


⚡ 关键特性

  • 📦 渲染静态网格体:直接在场景中显示 .fbx.obj 等导入的静态模型。
  • 🛠️ 支持材质系统:可为网格的多个材质槽绑定不同材质。
  • 🎮 碰撞支持:内置简单或复杂碰撞(基于网格或自定义)。
  • ⚙️ LOD(Level of Detail):自动切换不同细节级别的模型以优化性能。
  • 🏷 实例化支持:可通过 InstancedStaticMeshComponent 派生类实现高效批量渲染。
  • 🔗 与光照系统集成:支持光照贴图、阴影投射、反射捕捉。

⚙️ 常见配置

  • 🏛 Static Mesh:指定所要渲染的静态网格体资源。
  • 🛠️ Materials:绑定的材质列表。
  • 🎮 Collision Presets:碰撞配置(如 BlockAll、OverlapAll、NoCollision)。
  • Cast Shadows:是否投射阴影。
  • 📦 Mobility:可设置为 Static / Stationary / Movable,影响渲染与性能。
  • 🏷 LOD Settings:网格细节级别控制。

🛠️ 使用方法

📚 在 C++ 中使用

1
2
3
4
5
UStaticMeshComponent* MeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComp"));
MeshComp->SetStaticMesh(LoadObject<UStaticMesh>(nullptr, TEXT("/Game/Meshes/MyMesh.MyMesh")));
MeshComp->SetMaterial(0, MyMaterial);
MeshComp->SetCollisionProfileName(UCollisionProfile::BlockAll_ProfileName);
RootComponent = MeshComp;

📚 在蓝图中使用

  1. 拖拽 StaticMeshComponent 到 Actor。
  2. Details 面板设置 Static Mesh、Material、Collision 等。
  3. 通过节点控制其显示、隐藏、材质切换等。

🎮 典型应用场景

  • 🏛 场景搭建:建筑、道路、树木、道具等固定场景物体。
  • 游戏交互对象:可拾取物体、陷阱、机关。
  • 🏷 装饰元素:角色装备的附加部件(如武器、背包)。
  • 📦 LOD 优化:大场景中远近物体的性能优化。

📚 常见子类与用途

  • UInstancedStaticMeshComponent 🏷:支持批量实例渲染,大幅提升性能。
  • UHierarchicalInstancedStaticMeshComponent ⚡:支持层级化实例化,常用于植被系统。
  • ULandscapeMeshProxyComponent 🏛:用于大地形渲染代理。

📝 小结

  • UStaticMeshComponent 是静态网格渲染的核心组件
  • 支持材质、碰撞、LOD、光照等完整渲染体系
  • 通过 C++ 与蓝图均可便捷使用
  • 子类扩展了实例化渲染、层级批量渲染等高级功能
  • 是关卡构建与性能优化中最常见、最重要的组件之一