蓝图 与 C++

蓝图 与 C++

虚幻引擎(Unreal Engine,简称 UE)的开发体系中,蓝图与 C++ 构成了高层与底层协作的双支柱。 蓝图提供了直观的可视化脚本环境,让设计师 (就算不懂编程) 能够快速构建游戏逻辑与交互;而 C ++ 则负责性能关键与系统底层的实现。
值得注意的是,UE5 的 C++并非标准意义上的 C++。它经过深度定制,用于支持反射系统、编辑器集成与跨平台编译。 因此,不能以编写一般 C++ 程序的方式对待 UE5 的编程。部分语言特性(如异常处理、RTTI、完整的标准库支持)被禁用或替换。

C++ 编程构建蓝图、蓝图构建内容 是理解整个开发体系的核心逻辑

蓝图类

在UE的内容菜单中,空白处右键-->蓝图类 便可选择创建蓝图


从菜单上能看到不同类的说明,可以通过点击右侧❔跳转到文档,可以在所有类中选择自己创建的c++类作为父类创建蓝图。

这里简单补充一下类继承关系,其中Object是 UE 中最基础的类,是UE对象系统、反射机制和内存管理的核心基础。

Object → Actor → Pawn → Character(实体类)
Object → Controller → PlayerController / AIController(控制类)
Object → GameMode / GameState / PlayerState / HUD / Widget(逻辑与显示类)

另外还有一个关卡蓝图(Level Blueprint),为 LevelScriptActor 的实例, 可调用或协调场景内Actor逻辑。

c++类

当在创建项目时选择了c++, 便可通过 工具 -->新建c++类 创建c++类,之后便会自动生成 .cpp .h 文件


关于宏

UCLASS🔗UPROPERTY🔗 UFUNCTION🔗 对应类、成员、函数,可点击🔗查看官方说明

简单示例


// Character.h
UCLASS()
class AMyCharacter : public AActor
{
    GENERATED_BODY()
  
public:        
    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
    float mytest;
    UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
    float mytest1;
    float mytest2;

其中 mytest2 没被宏修饰,而不可见

页面编辑只有mytest1可见

页面编辑只有mytest1可见

蓝图编辑都可见

蓝图编辑都可见

对于函数而言一样

// 蓝图中可调用
UFUNCTION(BlueprintCallable)
void myTestFunc();

// 之后还要在.cpp 中实现

⚠️ c++ 类要以其作为父类创建蓝图才能在开发过程实现其功能

后续会在实现物体移动、交互等基础功能时,具体说明它们的用法

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...