六一的部落格


行百里者半九十



虚幻引擎中的组件可以分为两大类

-
逻辑组件 不具备可视化功能
可视化组件 如静态网格组件, 粒子系统控制组件等

给actor派生类添加组件, 扩展类的功能, 通过组合 composite 模式实现

初始化静态网格组件属于 ASimpleGeometry 对象构造过程中的一个环节, 一应操作在构造函数中完成


添加静态网格体组件后的效果和后续操作

  1. 添加静态网格组件后, actor对象拥有变换属性

    仍不可见
  2. 可在虚幻编辑器中为actor对象绑定骨骼或体积

    可见
  3. 可在虚幻编辑器中为actor对象应用材质

    图案或纹理

添加静态网格体组件


为类添加数据成员

  1. 前向声明

    SimpleGeometry.h

    1class UStaticMeshComponent;
  2. 添加静态网格体组件

    SimpleGeometry.h

    public

    -
    VisibleAnywhere 在虚幻编辑器的原型和实例中均可见
    1UPROPERTY(VisibleAnywhere)
    2UStaticMeshComponent* StaticMesh;

    针对静态网格组件, 虚幻编辑器会添加 Static Mesh 属性


在构造函数中初始化

SimpleGeometry.cpp

  1. 包含头文件

    1#include "Components/StaticMeshComponent.h"
  2. 添加函数成员: 初始化组件

    private

    在构造函数中调用

    -
    UObject::CreateDefaultSubobject 创建组件; 返回指向给定类型对象的指针
    AActor::SetRootComponent 将可视化组件设为根组件

    StaticMeshInEditor 为组件在虚幻编辑器中对应的属性名, 一经设置, 不得修改

    1void ASimpleGeometry::InitStaticMesh()
    2{
    3    StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>("StaticMeshInEditor");
    4    SetRootComponent(StaticMesh);
    5}

在虚幻编辑器中查看

  1. 在关卡中添加对象: 仍旧不可见
  2. 细节面板可看到根组件StaticMesh, 及在虚幻编辑器中的属性名StaticMeshInEditor
  3. 细节面板中可看到变换参数, 以及静态网格体(static mesh)属性

    可以通过静态网格体属性绑定模型



为静态网格体组件绑定模型

使用新手包里的模型或引擎提供的模型


添加新手包

  1. 内容浏览器点击 Add 按钮, 选择 添加功能或内容包

  2. 内容 > 初学者内容包



使用虚幻引擎自带内容


显示引擎内容

  1. 在世界大纲选中对象

  2. 细节 > Static Mesh > 下拉框


  3. 点击 管理 按钮

  4. 勾选 Show Engine Content



绑定立方体

  1. 搜索cube

  2. 选择 EngineMeshes/Cube



效果图



其他网格体

-
立方体 Engine/EngineMeshes/Cube
球形 Engine/EngineMeshes/Sphere
圆锥 Engine/BasicShapes/Cone

添加静态网格体组件


虚幻引擎中的组件可以分为两大类

-
逻辑组件 不具备可视化功能
可视化组件 如静态网格组件, 粒子系统控制组件等

给actor派生类添加组件, 扩展类的功能, 通过组合 composite 模式实现

初始化静态网格组件属于 ASimpleGeometry 对象构造过程中的一个环节, 一应操作在构造函数中完成


添加静态网格体组件后的效果和后续操作

  1. 添加静态网格组件后, actor对象拥有变换属性

    仍不可见
  2. 可在虚幻编辑器中为actor对象绑定骨骼或体积

    可见
  3. 可在虚幻编辑器中为actor对象应用材质

    图案或纹理

添加静态网格体组件


为类添加数据成员

  1. 前向声明

    SimpleGeometry.h

    1class UStaticMeshComponent;
  2. 添加静态网格体组件

    SimpleGeometry.h

    public

    -
    VisibleAnywhere 在虚幻编辑器的原型和实例中均可见
    1UPROPERTY(VisibleAnywhere)
    2UStaticMeshComponent* StaticMesh;

    针对静态网格组件, 虚幻编辑器会添加 Static Mesh 属性


在构造函数中初始化

SimpleGeometry.cpp

  1. 包含头文件

    1#include "Components/StaticMeshComponent.h"
  2. 添加函数成员: 初始化组件

    private

    在构造函数中调用

    -
    UObject::CreateDefaultSubobject 创建组件; 返回指向给定类型对象的指针
    AActor::SetRootComponent 将可视化组件设为根组件

    StaticMeshInEditor 为组件在虚幻编辑器中对应的属性名, 一经设置, 不得修改

    1void ASimpleGeometry::InitStaticMesh()
    2{
    3    StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>("StaticMeshInEditor");
    4    SetRootComponent(StaticMesh);
    5}

在虚幻编辑器中查看

  1. 在关卡中添加对象: 仍旧不可见
  2. 细节面板可看到根组件StaticMesh, 及在虚幻编辑器中的属性名StaticMeshInEditor
  3. 细节面板中可看到变换参数, 以及静态网格体(static mesh)属性

    可以通过静态网格体属性绑定模型



为静态网格体组件绑定模型

使用新手包里的模型或引擎提供的模型


添加新手包

  1. 内容浏览器点击 Add 按钮, 选择 添加功能或内容包

  2. 内容 > 初学者内容包



使用虚幻引擎自带内容


显示引擎内容

  1. 在世界大纲选中对象

  2. 细节 > Static Mesh > 下拉框


  3. 点击 管理 按钮

  4. 勾选 Show Engine Content



绑定立方体

  1. 搜索cube

  2. 选择 EngineMeshes/Cube



效果图



其他网格体

-
立方体 Engine/EngineMeshes/Cube
球形 Engine/EngineMeshes/Sphere
圆锥 Engine/BasicShapes/Cone