官方文档教程:点击打开链接

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

width="640" height="360" src="https://www.youtube.com/embed/dS1f71pS-5I?rel=0" frameborder="0" allowfullscreen="" style="color: rgb(22, 22, 23); font-family: Tahoma, Helvetica, Arial, 'Microsoft Yahei', ΢���ź�, STXihei, ����ϸ��, sans-serif; font-size: 15px; line-height: 26.25px;">

==========================================

1. 必备的项目设置

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

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

    CreateProject.png

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

2. 创建C++类

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

    AddCPPCode.png

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

    ChooseParentClass.png

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

    NameActorClass.png


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

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

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

    SolutionExplorer_Files.png

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

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

    floatRunningTime;
  3. 切换到FloatingActor.cpp,我们会在 AFloatingActor::Tick 底部的终止大括号前添加以下代码:

    FVectorNewLocation=GetActorLocation();floatDeltaHeight=(FMath::Sin(RunningTime+DeltaTime)-FMath::Sin(RunningTime));NewLocation.Z+=DeltaHeight*20.0f;//把高度以20的系数进行缩放RunningTime+=DeltaTime;SetActorLocation(NewLocation);

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

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

    CompileFromVS.png

    (在 Visual Studio 中)

    CompileFromEditor.png

    (在 虚幻编辑器 中)


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

Finished Code

FloatingActor.h

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.#pragmaonce#include"GameFramework/Actor.h"#include"FloatingActor.generated.h"UCLASS()classQUICKSTART_APIAFloatingActor:publicAActor{GENERATED_BODY()public:// 设置此actor属性的默认值AFloatingActor();// 当游戏开始或生成时调用virtualvoidBeginPlay()override;// 在每一帧调用virtualvoidTick(floatDeltaSeconds)override;floatRunningTime;};

FloatingActor.cpp

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.#include"QuickStart.h"#include"FloatingActor.h"// 设置默认值AFloatingActor::AFloatingActor(){// 将此actor设置为在每一帧都调用Tick()。  如果您不需要这项功能,您可以关闭它以改善性能。PrimaryActorTick.bCanEverTick=true;}// 当游戏开始或生成时调用voidAFloatingActor::BeginPlay(){Super::BeginPlay();}// 在每一帧调用voidAFloatingActor::Tick(floatDeltaTime){Super::Tick(DeltaTime);FVectorNewLocation=GetActorLocation();floatDeltaHeight=(FMath::Sin(RunningTime+DeltaTime)-FMath::Sin(RunningTime));NewLocation.Z+=DeltaHeight*20.0f;//把高度以20的系数进行缩放RunningTime+=DeltaTime;SetActorLocation(NewLocation);}

4. 测试您的代码

  • SHARE:
  1. 在 虚幻编辑器 中,找到 Content Browser(内容浏览器) ,并展开名称为"C++类"的文件夹、 在该文件夹中,有一个包含了 Actor类的 FloatingActor 的"QuickStart"文件夹。

    ClassInContentBrowser.png

  2. 我们可以直接把 FloatingActor 类拖曳到 Level Editor(关卡编辑器) 窗口来创建世界中 FloatingActor 的实例。 我们会在 Level Editor(关卡编辑器) 和 World Outliner(世界大纲视图) 中选择它,它在其中的名称为 "FloatingActor1"。 它的Components(组件) 和其它属性可以在 Details(详细信息) 面板中看到。

    WorldOutliner.png

  3. FloatingActor 应该在游戏中可见。 在选择了它后,我们可以在 Details Panel(详细信息面板) 中点击 Add Component(添加组件) ,然后选择 Cone(椎体) 从而赋予它简单的可视化表现。

    AddStaticMesh.png

  4. 现在自定义的 Actor 已经完成了,让我们把它移动到明显的位置。 我们可以用鼠标左键在世界中选择并拖曳内容,或者我们也可以手动来移动它。 如需手动移动,我们可以在 Level Editor(关卡编辑器) 或 World Outliner(世界大纲视图) 中选择它,然后使用Details Panel(详细信息面板) 来选择"FloatingActor1 (实例)"。 我们现在可以直接编辑FloatingActor1的 Transform(变换) 的Location(位置) 域了。 让我们把X设置为-200,把Z设置为200。这样我们就可以在场景中的桌子上放置"FloatingActor1"了。

    SetActorLocation.png

  5. 按下 Play(播放) 按钮,然后观看椎体的上下浮动!

    MovingCone.png


Finished Code

FloatingActor.h

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.#pragmaonce#include"GameFramework/Actor.h"#include"FloatingActor.generated.h"UCLASS()classQUICKSTART_APIAFloatingActor:publicAActor{GENERATED_BODY()public:// 设置此actor属性的默认值AFloatingActor();// 当游戏开始或生成时调用virtualvoidBeginPlay()override;// 在每一帧调用virtualvoidTick(floatDeltaSeconds)override;floatRunningTime;};

FloatingActor.cpp

// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.#include"QuickStart.h"#include"FloatingActor.h"// 设置默认值AFloatingActor::AFloatingActor(){// 将此actor设置为在每一帧都调用Tick()。  如果您不需要这项功能,您可以关闭它以改善性能。PrimaryActorTick.bCanEverTick=true;}// 当游戏开始或生成时调用voidAFloatingActor::BeginPlay(){Super::BeginPlay();}// 在每一帧调用voidAFloatingActor::Tick(floatDeltaTime){Super::Tick(DeltaTime);FVectorNewLocation=GetActorLocation();floatDeltaHeight=(FMath::Sin(RunningTime+DeltaTime)-FMath::Sin(RunningTime));NewLocation.Z+=DeltaHeight*20.0f;//把高度以20的系数进行缩放RunningTime+=DeltaTime;SetActorLocation(NewLocation);

5. 发挥想象!

  • SHARE:

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

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

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

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

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

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

  • 如需教程,请参阅C++ Programming Tutorials页面。

-----------------------------------------------------------------------------------------------

PS:

编程方面跟Unity C#有点像,函数有对应的生命周期,不过C++的.cpp和.h的编辑方式要多注意下。

【UE4学习】02——C++编程快速入门相关推荐

  1. UE4学习笔记1st:编程快速入门

    UE4学习笔记1st:编程快速入门 今天我开始学习虚幻4游戏引擎,为了此我专门买了新的电脑,我将主要配置写在这里,有想学习的同学可以参考 显卡:丽台K620 CPU:E3-1230-V3 主板:b85 ...

  2. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  3. Bootstrap学习笔记01【快速入门、栅格布局】

    Java后端 学习路线 笔记汇总表[黑马程序员] Bootstrap学习笔记01[快速入门.栅格布局][day01] Bootstrap学习笔记02[全局CSS样式.组件和插件.案例_黑马旅游网][d ...

  4. pdf python 3.7编程快速入门 潘中强_无python基础,这些书籍可以帮您快速入门。

    利用Python进行数据分析> 定 价:119 元 作者:韦斯·麦金尼(Wes McKinney)著;徐敬一译 ISBN:9787111603702 出 版 社:机械工业出版社 学习Python ...

  5. 如何学习verilog,如何快速入门?

    前言 害怕真的有人不知道verilog是什么东西,于是就给把百度给搬来了! Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图.逻辑表达式 ...

  6. 【Socket网络编程进阶与实战】------ Socket网络编程快速入门

    前言 本篇博客主要是分享,socket网络编程进阶与实践☞socket网络编程快速入门 一.聊一聊Socket 学习目标与收获

  7. 怎么运行c语言程序,如何使用C语言进行编程操作,教程在这里,C语言编程快速入门...

    原标题:如何使用C语言进行编程操作,教程在这里,C语言编程快速入门 C语言编程初级学习 编程语言有很多种,我们今天就介绍一种很瘦大家喜欢的C语言.该语言在大学中也是一门较为重要的学科,更是计算机学科里 ...

  8. Windows游戏编程快速入门方法

    Windows游戏编程快速入门方法 Easideao(简单思路) 序言: 从2001年到2005年,在不知不觉中我已经渡过了4年的职业游戏开发生涯.在这4年里经常会有些网友向我询问编程的入门有没有捷径 ...

  9. Fortran编程快速入门

    Fortran编程快速入门 1. 简介 1.1 FORTRAN语言发展概况 1.2 Fortran77和Fortran90的区别 1.3 Fortran和C/C++等大多数语言的不同 1.4 简单的 ...

最新文章

  1. 参加第一届宇宙 JavaScript 大会是怎样的体验
  2. 计算机学院大学生程序设计竞赛(2015’11)1007 油菜花王国
  3. NTU 课程笔记:CV6422 样本分布
  4. gitHub使用记录
  5. js 通过jquery插件获取url参数 其中的一个小问题,或许不算Bug。
  6. qt qss设置字体大小_Qt编写自定义控件70-扁平化flatui
  7. 计算机集数控技术文献,数控技术
  8. 洛谷 深基 第1部分 语言入门 第4章 循环结构程序设计(2022.02.14)
  9. OJ1003: 两个整数的四则运算
  10. Python 一键转化代码为流程图
  11. C++ 操作sqlite
  12. “WiFi 万能钥匙”盗 9 亿用户数据,如何看待运营平台滥用隐私的问题?
  13. XidianOJ 1175: count
  14. 2017蓝桥杯结果填空:迷宫
  15. HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信
  16. 软件项目管理题外话篇-项目计划与结婚
  17. 山西省吕梁市职称计算机考试,山西吕梁考点2012年职称计算机考试时间通知
  18. apache2 html文件夹,需要与我的Apache2网站配置文件
  19. 深度装机大师一键重装_正确重装系统(1):一键重装系统出现问题解决方法...
  20. python3下使用有道翻译网页版实现翻译功能~~~附源码

热门文章

  1. 使用http://itunes.apple.com/lookup?id= 获取不到数据
  2. Windows 10 安装 Android Studio 安装 创建APP 创建模拟器调试 真机调试 编译 签名打包APP
  3. minicom指令_minicom配置及说明
  4. nmcli-3种网卡绑定方式
  5. 学生写字台灯用什么牌子的好?高品质学生台灯品牌推荐
  6. jdbc:oracle:thin:@192.168.3.98:1521:orcl(简单介绍)
  7. 【Unity3D小功能】Unity3D中实现UI擦除效果、刮刮卡功能
  8. VC API常用函数
  9. 手机话费接口 为指定手机直接充值
  10. ELK:ElasticSearch UNASSIGNED 分片恢复