一个主学Unity、很少接触C++、接触过蓝图的人通过模板的代码对虚幻C++的简单探索
01.构建一个简单的角色类
(知识水平有限,如果有很多错误的地方请见谅)
- 首先创建一个GameModeBase的C++类,取名为“MyGameModeBase”。
- 这是初始化的头文件MyGameModeBase.h
- 虚幻4一般都是在一个头文件中写这个类,然后在对应名字的源文件中定义这个成员函数,我们写如下代码,有什么作用请看注释(默认东西的就不管了)
- 这是初始化的源文件MyGameModeBase.cpp
- 我们先定义这个构造函数
- 创建一个Character的C++类,取名为”MyCharacter”。
- 这是初始化的头文件MyCharacter.h
- 这是初始化的源文件MyCharacter.cpp
- 这时候我们再创建一个继承于MyCharacter的蓝图NewCharacterBlueprint,以便于之后可视化地设置各个组件的位置
- 我们把MyGameModebase的构造函数写好,代码已有详细的注释,这里主要只是设置MyGameModeBase默认的Pawn
- 给MyCharacter添加组件
- MyCharacter继承于Character,也就是继承了USkeletalMeshComponent(骨架网格物体,对应:Mesh)、UCharacterMovementComponent(角色移动组件,对应:CharacterMovement)、UCapsuleComponent(胶囊体组件,对应:CapsuleComponent)和UArrowComponent(箭头组件,对应:ArrowComponent)四个组件,我们可以看一下蓝图
- 创建组件之前,我们先来看一下虚幻4常见的宏:UPROPERTY
(详细信息:)
我们只看一些常用的,其他的请看详细信息,跟网络复制相关的也在详细信息中有提及:
BlueprintCallable:蓝图可调用
BluprintReadOnly:蓝图只读,变量必须公开
BlueprintReadWrite:蓝图可读可写,变量必须公开
Category =“变量分类的名称”:相当于蓝图中可以给变量分组显示
EditAntwhere:变量在蓝图中可以在蓝图的属性面板或世界的属性面板看到并编辑
VisibleAnywhere:变量可以在蓝图的属性面板或世界的属性面板中看到
EditDefaultsOnly:变量只能在蓝图的属性面板中看到并编辑
VisibleDefaultOnly:变量只能在蓝图的属性面板中看到
EditInstanceOnly :变量只能在世界的属性面板中看到并编辑
VisibleInstanceOnly:变量只能在蓝图的属性面板中看到
meta = (AllowPrivateAccess = "true"):如果为true,则可以访问蓝图中可以访问C ++私有范围中定义的属性
- 在MyCharacter.h中声明组件USpringArmComponent和UCameraComponent,组件一定要是指针变量,否则会报错
- 在MyCharacter类的构造函数中创建这些组件,核心是CreateDefaultSubobject函数模板和AttachTo函数,用法可以参考相关蓝图,也可以使用“MainCamera->SetupAttachment(SpringArm);”代替AttachTo函数
(5)到此为止,一个角色基本构建构建完成,接下来我们只需要根据自己的需求去调整继承者Character类的变量,或者直接在蓝图类中修改也可以。