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++ 與藍圖均可便捷使用。
- ? 子類擴展了實例化渲染、層級批量渲染等高級功能。
- ? 是關卡構建與性能優化中最常見、最重要的組件之一。