一个主学Unity、很少接触C++、接触过蓝图的人通过模板的代码对虚幻C++的简单探索

01.构建一个简单的角色类

(知识水平有限,如果有很多错误的地方请见谅)

  1. 首先创建一个GameModeBase的C++类,取名为“MyGameModeBase”。
  2. 这是初始化的头文件MyGameModeBase.h

unity 对接蓝图 unity蓝图在哪里_初始化

  1. 虚幻4一般都是在一个头文件中写这个类,然后在对应名字的源文件中定义这个成员函数,我们写如下代码,有什么作用请看注释(默认东西的就不管了)

unity 对接蓝图 unity蓝图在哪里_游戏开发_02

  1. 这是初始化的源文件MyGameModeBase.cpp

unity 对接蓝图 unity蓝图在哪里_初始化_03

  1. 我们先定义这个构造函数

unity 对接蓝图 unity蓝图在哪里_unity 对接蓝图_04

  1. 创建一个Character的C++类,取名为”MyCharacter”。
  2. 这是初始化的头文件MyCharacter.h

unity 对接蓝图 unity蓝图在哪里_unity 对接蓝图_05

  1. 这是初始化的源文件MyCharacter.cpp

unity 对接蓝图 unity蓝图在哪里_初始化_06

  1. 这时候我们再创建一个继承于MyCharacter的蓝图NewCharacterBlueprint,以便于之后可视化地设置各个组件的位置
  2. 我们把MyGameModebase的构造函数写好,代码已有详细的注释,这里主要只是设置MyGameModeBase默认的Pawn

unity 对接蓝图 unity蓝图在哪里_C++_07

  1. 给MyCharacter添加组件
  2. MyCharacter继承于Character,也就是继承了USkeletalMeshComponent(骨架网格物体,对应:Mesh)、UCharacterMovementComponent(角色移动组件,对应:CharacterMovement)、UCapsuleComponent(胶囊体组件,对应:CapsuleComponent)和UArrowComponent(箭头组件,对应:ArrowComponent)四个组件,我们可以看一下蓝图

unity 对接蓝图 unity蓝图在哪里_初始化_08

  1. 创建组件之前,我们先来看一下虚幻4常见的宏:UPROPERTY

(详细信息:)

我们只看一些常用的,其他的请看详细信息,跟网络复制相关的也在详细信息中有提及:

BlueprintCallable:蓝图可调用

BluprintReadOnly:蓝图只读,变量必须公开

BlueprintReadWrite:蓝图可读可写,变量必须公开

Category =“变量分类的名称”:相当于蓝图中可以给变量分组显示

EditAntwhere:变量在蓝图中可以在蓝图的属性面板或世界的属性面板看到并编辑

VisibleAnywhere:变量可以在蓝图的属性面板或世界的属性面板中看到

EditDefaultsOnly:变量只能在蓝图的属性面板中看到并编辑

VisibleDefaultOnly:变量只能在蓝图的属性面板中看到

EditInstanceOnly :变量只能在世界的属性面板中看到并编辑

VisibleInstanceOnly:变量只能在蓝图的属性面板中看到

meta = (AllowPrivateAccess = "true"):如果为true,则可以访问蓝图中可以访问C ++私有范围中定义的属性

  1. 在MyCharacter.h中声明组件USpringArmComponent和UCameraComponent,组件一定要是指针变量,否则会报错

unity 对接蓝图 unity蓝图在哪里_虚幻4_09

  1. 在MyCharacter类的构造函数中创建这些组件,核心是CreateDefaultSubobject函数模板和AttachTo函数,用法可以参考相关蓝图,也可以使用“MainCamera->SetupAttachment(SpringArm);”代替AttachTo函数

unity 对接蓝图 unity蓝图在哪里_游戏开发_10

(5)到此为止,一个角色基本构建构建完成,接下来我们只需要根据自己的需求去调整继承者Character类的变量,或者直接在蓝图类中修改也可以。