Unreal Engine UStaticMeshComponent
Unreal
- Unreal Engine - UStaticMeshComponent
- 🏛 定义
- 🏛 类继承
- ⚡ 关键特性
- ⚙️ 常见配置
- 🛠️ 使用方法
- 📚 在 C++ 中使用
- 📚 在蓝图中使用
- 🎮 典型应用场景
- 📚 常见子类与用途
- 📝 小结
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++ 中使用
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;
📚 在蓝图中使用
- 拖拽 StaticMeshComponent 到 Actor。
- 在 Details 面板设置 Static Mesh、Material、Collision 等。
- 通过节点控制其显示、隐藏、材质切换等。
🎮 典型应用场景
- 🏛 场景搭建:建筑、道路、树木、道具等固定场景物体。
- ⚡ 游戏交互对象:可拾取物体、陷阱、机关。
- 🏷 装饰元素:角色装备的附加部件(如武器、背包)。
- 📦 LOD 优化:大场景中远近物体的性能优化。
📚 常见子类与用途
- UInstancedStaticMeshComponent 🏷:支持批量实例渲染,大幅提升性能。
- UHierarchicalInstancedStaticMeshComponent ⚡:支持层级化实例化,常用于植被系统。
- ULandscapeMeshProxyComponent 🏛:用于大地形渲染代理。
📝 小结
- ✅ UStaticMeshComponent 是静态网格渲染的核心组件。
- ✅ 支持材质、碰撞、LOD、光照等完整渲染体系。
- ✅ 通过 C++ 与蓝图均可便捷使用。
- ✅ 子类扩展了实例化渲染、层级批量渲染等高级功能。
- ✅ 是关卡构建与性能优化中最常见、最重要的组件之一。