您的位置:首页 > 产品设计 > UI/UE

UE4编程快速入门

2015-08-05 21:21 525 查看
在本教程的过程中,我们会创建新的 虚幻引擎 项目,向其添加新的C++类,然后编译项目并添加新类的实例到关卡中。 在完成后,我们会看到以C++来编程的 Actor 在屏幕上的移动。



步骤

1.
必备的项目设置

2.
创建C++类

3.
写入并编译C++代码

4.
测试您的代码

5. 发挥想象!

编程快速入门

Previous Step

下一步

快速启动主页

从启动程序中打开 虚幻引擎项目浏览器将会出现。

点击 New Project(新建项目) 选项卡,然后选择 C++ 选项卡。 在该处选择 Basic Code(基础代码) ,这样我们可以获得全新的起始点,确认设置了 "With Starter Content(和入门内容共同启动)"。 我们需要输入项目名称,就使用"QuickStart"吧。 现在可以点击Create Project(创建项目) 并开始了。




Unreal Editor(虚幻编辑器) 现在将会打开新项目。 Visual Studio 也会打开,并载入项目刚创建的解决方案文件。


2. 创建C++类

编程快速入门

Unreal
Engine 4.7

上一步

下一步

快速启动主页

Unreal Editor(虚幻编辑器) 中,我们可以使用 Add Code to Project(添加代码到项目) 命令来创建新的C++类,它位于File(文件) 下拉菜单中。




此时将会打开 Choose Parent Class(选择父类) 菜单。 由于 Actor 是能够存在于 Unreal Engine(虚幻引擎) 层面的最为基础的类,我们将会把 Actor 类作为基类。




此时将会打开 Name Your New Actor(命名您的新Actor) 菜单。 对这个示例来说,让我们输入名称"FloatingActor",然后点击Create Class(创建类)




现在我们已经创建了一个C++类,我们可以切换到 Visual Studio 来对它编程。
FloatingActor.cpp
将会自动打开, Unreal Engine(虚幻引擎) 会自动编译并使用我们的新类来重新载入代码。


3. 写入并编译C++代码

编程快速入门

上一步

下一步

快速启动主页

Visual Studio 中,我们会使用 Solution Explorer(解决方案浏览器) 面板来搜寻新建的C++文件。 在我们的示例中,它们被命名为
FloatingActor.cpp
FloatingActor.h
,并且将被放置于"QuickStart"项目中。




我们要开始写代码了。 本教程中所有的代码可用于完成本页面的所有指示,您可以在页面的底部位置找到它们。

FloatingActor.h
中,我们会在文件末尾处的终止大括号和分号之前添加以下代码:
[code]float RunningTime;


切换到
FloatingActor.cpp
,我们会在 AFloatingActor::Tick 底部的终止大括号前添加以下代码:
[code]FVector NewLocation = GetActorLocation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f;      //把高度以20的系数进行缩放
RunningTime += DeltaTime;
SetActorLocation(NewLocation);


我们刚写的代码会导致 FloatingActors 平滑地上下跳动,使用我们创建的 RunningTime 变量来随时间追溯移动的轨迹。

现在编码完成了,我们可以通过在 Solution Browser(解决方案浏览器) 中右键点击项目并选择 Build(编译) 命令,或通过点击Unreal Editor(虚幻编辑器)Compile(编译) 按钮来进行编译。 编译成功后, 虚幻引擎 会自动载入我们的变更内容。



(在 Visual Studio 中)



(在 虚幻编辑器 中)

我们现在可以基于代码来在 虚幻引擎 中创建物体了! 所有本页面中使用的代码都在下方,以供您参考。

Finished Code

FloatingActor.h
[code]// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.

#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
[code]// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.

#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(播放) 按钮,然后观看椎体的上下浮动!




Finished Code

FloatingActor.h
[code]// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.

#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
[code]// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.

#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);
}


编程快速入门

上一步

Next Step

快速启动主页

通过使用您已经掌握的内容,您可以进行如下操作:

添加粒子系统组件 到您的 FloatingActor 中。 您的项目中已经包括了预编译的 粒子系统

您可以使用 虚幻引擎的 UProperty宏来显示一个变量,以用于您的 FloatingActor的 移动力的大小,而不是使用硬编码值。
您可以查看Variables, Timers, and Events教程来获得关于此主题的帮助信息。

添加X和/或Y轴的周期性运动,并将 DeltaTime 值乘以0.6和1.4之间的值,这样您的 FloatingActor 看起来是自由悬浮的。 对于能力加成道具来说,这个看起来很棒!

对于本教程中提到的详细内容,请参考以下文件:

如需了解更多关于 Actors 的信息,请参阅Actor手册页面。

如需阅读更多教程,请参阅C++ Programming Tutorials页面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: