谨以此记录自己学习UE4(C++)的路程。
虚幻4提供了两种方法创建游戏性元素:C++和蓝图可视化脚本。这里着重记录C++编程。废话不多说,开始虚幻旅程...
在开始之前必须先知道UE4的相关类:
Object :UE中所有类的基类,不能添加到游戏当中,不能生成、放到关卡中,用于生成函数,数据,蓝图中无法使用。
Actor:游戏性对象,支持三维变换,比如平移,旋转和缩放变换,可以有一个或者多个组件,可以被放置在场景中也可以动态生成。Actor 可以通过游戏代码(C++或蓝图)来创建(Spawn)及销毁。在 C++ 中,AActor 是所有 Actor 的基类。
Components : 组件,Actor的一部分,特殊类型的对象。在Actor中添加组件时,就是在拼凑Actor的零碎部分。就像,汽车上的车轮,方向盘等都可以看做组件,这些组件组成了汽车Actor。
Pawn : 玩家在游戏中的物理显示,可以被玩家支配的角色,也可以是AI控制的角色,例如NPC。
Character : 控制器,它可以控制一个Pawn(或Pawn的子类,比如Character)来掌控它的动作。人类玩家使用PlayerControllers来控制 Pawn,而AIControllers实现了它们所控制的Pawn的人工智能。控制器使用 Possess 函数控制Pawn,使用 Unpossess 函数放弃控制Pawn。
PlayerController : 玩家控制器,玩家通过PlayController来控制Pawn
AIController : 类似于PlayerController,区别是由AI控制
GameMode : 像游戏规则及获胜条件这样的内容,游戏过程中不会有太多的数据改变
PlayerState : 玩家的游戏状态
GameState : 游戏状态
相关类先记录这么多,更多的在之后过程中逐步探索,接下来开始创建一个C++类:
1.点击 New Project(新建项目) 选项卡,然后选择 C++ 选项卡。 在该处选择 Basic Code(基础代码),点击 Create Project(创建项目)。
2.在Unreal Editor(虚幻编辑器),使用Add Code to Project 创建新的C++类。
3.此时将会打开选择父类菜单。 Actor 是能够存在于 Unreal Engine(虚幻引擎) 层面的最为基础的类,选择将 Actor 类作为基类,并且命名,这里命名为FloatingActor。
4.在 Visual Studio 中找到刚才新建的的C++文件,会看到两个文件,FloatingActor.h,FloatingActor.cpp 这两个文件就不用多说了。
5.在新建的两个C++文件中添加如下代码:
FloatingActor.h
#pragma once
#include "GameFramework/Actor.h"
#include "FloatingActor.generated.h"
UCLASS()
class QUICKSTART_API AFloatingActor : public AActor{
GENERATED_BODY()
public:
// 设置此actor属性的默认值
AFloatingActor();
// 当游戏开始或生成时调用
virtual void BeginPlay() override;
// 在每一帧调用
virtual void Tick( float DeltaSeconds ) override;
float RunningTime;
};
FloatingActor.cpp
#include "QuickStart.h"
#include "FloatingActor.h"
// 设置默认值
AFloatingActor::AFloatingActor()
{
// 将此actor设置为在每一帧都调用Tick()。 如果您不需要这项功能,您可以关闭它以改善性能。
PrimaryActorTick.bCanEverTick = true;
}
// 当游戏开始或生成时调用
void AFloatingActor::BeginPlay()
{
Super::BeginPlay();
}
// 在每一帧调用
void AFloatingActor::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );
FVector NewLocation = GetActorLocation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f; //把高度以20的系数进行缩放
RunningTime += DeltaTime;
SetActorLocation(NewLocation);
}
在 虚幻编辑器 中,找到 Content Browser(内容浏览器),并展开名称为"C++类"的文件夹、 在该文件夹中,有一个包含了 Actor 类的 FloatingActor 的"QuickStart"文件夹。
我们可以直接把 FloatingActor 类拖曳到 Level Editor(关卡编辑器) 窗口来创建世界中 FloatingActor 的实例。 我们会在 Level Editor(关卡编辑器) 和 World Outliner(世界大纲视图) 中选择它,它在其中的名称为 "FloatingActor1"。 它的 Components(组件)和其它属性可以在 Details(详细信息) 面板中看到。
FloatingActor 应该在游戏中可见。 在选择了它后,我们可以在 Details Panel(详细信息面板) 中点击 Add Component(添加组件) ,然后选择 Cone(椎体) 从而赋予它简单的可视化表现。
现在自定义的 Actor 已经完成了,让我们把它移动到明显的位置。 我们可以用鼠标左键在世界中选择并拖曳内容,或者我们也可以手动来移动它。 如需手动移动,我们可以在 Level Editor(关卡编辑器) 或 World Outliner(世界大纲视图) 中选择它,然后使用 Details Panel(详细信息面板) 来选择"FloatingActor1 (实例)"。 我们现在可以直接编辑FloatingActor1的 Transform(变换) 的 Location(位置)域了。 让我们把X设置为-200,把Z设置为200。这样我们就可以在场景中的桌子上放置"FloatingActor1"了。
- 按下 Play(播放) 按钮,然后观看椎体的上下浮动!
注:资料来源于http://api.unrealengine.com/CHN/Programming/QuickStart/4/index.html