精华内容
下载资源
问答
  • C++程序员如何入门Unreal Engine 4

    千次阅读 2018-06-02 21:51:36
    其次,本文只是偏重工程方面的介绍,没多少理论知识的介绍,目的纯粹就是让一个完全没有接触过UE4C++程序员能够很快着手开发UE程序。再次,本文只是个人的经验之谈,甚至有可能有理解错误的地方...
    摘要: 一位程序员网友小保哥分享自己的UE4快速上手过程,只是笔记,52VR做了一点更加适合阅读的修改,整理给大家。

    1. 首先,本文只是针对有比较熟练C++技能的程序员,他可以没有任何图形学或游戏引擎方面的经验知识。
    2. 其次,本文只是偏重工程方面的介绍,没多少理论知识的介绍,目的纯粹就是让一个完全没有接触过UE4的C++程序员能够很快着手开发UE程序。
    3. 再次,本文只是个人的经验之谈,甚至有可能有理解错误的地方,因为我也只是学了UE4一个多月,但是确实能够让我很短时间就能从事UE4的开发了。
    4. 最后,源于以上几点,高手勿喷,如有不爽,绕行即可。若有闲情雅致,可以顺手指点指点,不吝感激。

    我研究的是UE4.10,因为电脑上只下载了这个,看的官方文档是4.9的。

    以下就按时间顺序排列我的学习过程:

    1)创建工程

    对程序员来说,甭管这个引擎如何如何,我如果用它开发一个什么东西,首先得创建一个工程,然后把所有相关的代码都写到这个工程里。这就是我们要知道的第一步。那么在UE4里如何创建一个工程呢?在启动引擎程序时,自己会蹦出一个窗口,让你选择打开电脑上已有的工程或者创建新的工程。UE4工程只有两种类型:蓝图的、C++的。这两种类型的工程其实没有任何实质性的区别。把UE4工程分成这两种类型,表现出来的唯一区别是:C++类型的工程创建的时候,会自动弹出visual studio来打开这个UE4工程。仅此而已。

    而对程序员来说,蓝图类型的工程创建好后,在该工程的UEditor的File菜单里会有一项[Create Visual studio Project],中文版是[生成Visual Studio项目],以后我只针对英文版来写了。点击一下这个菜单项,对应的Visual Studio工程文件就创建好了。相应的,File菜单里还有[Open Visual Studio]菜单项,作用就是在Visual Studio里打开该工程对应的代码文件。其他菜单项暂且放下,一会儿再回头说几句就懂了。

    2)UE4的工程配置

    甭管是蓝图类型还是C++类型的,工程反正是创建好了。

    到这里,我们先不管如何往这个工程里写代码添加新功能。我们直接Build一下这个工程:UEditor界面工具栏上的Build按钮或者VisualStudio的Build按钮。没有任何悬念,结果肯定是Build成功。

    哦,说到这里,提一下,UE4.10以上必须安装Visual Studio 2015。我们打开对应的Visual Studio工程(如果是蓝图类型,按照上面所述方法生成Visual Studio工程即可)。

    215337owpzs0wsovpwpqpp

    在VisualStudio里,我们能看到这个工程里的代码文件就很少的几个,如图,这张图片里VirtualCamera是我的工程名。注意看.Target.cs后缀的文件,这里所谓的Target就是Makefile文件里的Target的意思。我们知道手写Makefile文件在某些情况下是比较费劲的行为,因此程序员们造出了很多Automake工具用来自动生成Makefile文件。因此,UE4自己也造了一个Automake工具,用来生成Makefile文件。这个Automake工具是C#写的,用C#文件来描述Make的规则,比如这个Target.cs就是用来描述Makefile里最终的成品,可以有多个Target.cs,但它们不一定同时起作用。比如vs编译类型选为[Development]而不是[Development Editor]时,那个Editor.Target.cs文件描述的Target的Make规则就不会起作用,此时,即便你从硬盘上和vs里删掉这个.Editor.Target.cs文件,工程也能成功编译并运行。文件列表里还有类似.Build.cs文件,这个就描述类似Makefile里的中间目标文件的Make规则。这些cs文件是在添加蓝图类或者c++代码时自动生成的,不用鸟它们,只需要知道这些cs文件是UE4的Automake工具需要的就行了,只要有了这些cs文件,我们的UE4工程就能正确编译运行。我这句话里蕴含的意思还有:对于UE4工程的编译,完全不依赖visual studio的project文件,即.vcxproj等文件。也就是说UE4使用自己的AutomationTool来读取cs文件描述的Make规则来进行编译。然而,凡是用visual studio打开的工程,必然需要一个.vcxproj文件,结合刚才讲的,我们就能明确这里visual studio的作用仅仅是方便我们阅读和编写源代码,这里visual studio的方便性还是很巨大的,不是吗!因为vs为阅读编写源代码提供了强大的支持。上一节的最后我没讲UEditor的File菜单里还有一项[Refresh Visual Studio Project],这个选项的作用就是遍历我们的UE4工程目录结构,根据遍历的结果,刷新.vcxproj文件,然后让vs重新加载这个更新的proj文件,这样只要我们往工程目录里增加或删除了代码文件,只需点击一下这个菜单项,在vs里就能反映出这种变化。


    3) UnrealAutomationTool

    工程的Build是一个很长的过程,里面分成多个阶段,我只关心里面最重要的阶段,就是代码文件的Compile过程。这里先介绍几个名词:UBT(Unreal Build Tool)又叫UnrealAutomationTool,这个工具主要作用就是组织Build流程,直白点说就是按一定顺序调用不同的工具完成整个Build过程。首先调用的肯定是解析各个cs文件的工具,解析的结果就是Build的目标,先Build谁,再Build谁。Build的顺序和目标定下来之后,就要开始真正的Build动作了,也就是Compile代码文件,Link出目标。Compile的第一步是调用UHT(UnrealHeaderTool)工具,这个工具就类似于C++里的预处理器,UHT读取.h文件,解析里面的一些元信息(UE4定义的,比如[UCLASS],[USTRUCT][BlueprintCallable],UPROPERTY,UFUNCTION等等),这些元信息不是C++语言的一部分,C++编译器自然无法识别,所以需要UHT工具先解析这些元信息,生成对应的.generated.h文件,在这个.generated.h文件里的内容就是用合法C++代码模拟的刚才那些元信息。然后原先.h文件里的所有元信息文本都会被删除。这一步完成后,出来的就都是合法的C++的代码文件了,可以直接送给C++预处理器处理,进而编译器,链接器。最终产出Build的目标,完成Build过程。参考一下下图:

    (点击图片看大图)

    215337bawz3ltwachrvvlh215337jtlvozvoxztplvws

    4)还是要说说Blueprint

    到这里,对于C++程序员来说,算是掌握了总体的开发流程,知道如何开始,如何结束了。

    那么剩下的就是学习如何往工程里添加代码,并学习代码怎么写--学习有哪些api可以用,如何用。这是UE4开发里最重要的一块了,废话,前面说的都只能算是常识,不能算UE4开发。然而只有知道了这些常识之后,我们接下来才可以真正开始学习开发。

    首先开宗明义,学习UE4最快速的捷径就是Blueprint,这是我学了1个多月的UE4的最大感触。

    在UE4的官方文档里,讲Blueprint时首先就说到:在UE4里,Blueprint支持的功能涵盖了C++支持的几乎所有特性,即BP(Blueprint简写)几乎等价于C++。然而,话锋一转,其又说到,BP有其适用场合,不是所有场合都适合用BP,因为某些场合BP的性能比原生C++代码要慢。

    适合用BP的场合:主要就是对性能要求不是特别高的应用场景,比如绝大部分Event的响应等等。然而在我看来,大部分的开发任务不就是Event的响应么,这也就是说BP适用UE4开发的绝大部分场景。而且,众人所说BP太慢,纯粹是无理由的偏见,我承认某些BP可能没有原生手写C++代码快,但并不代表BP性能低。

    从开发效率上来看,能用BP的地方尽量用BP所带来的好处实在是不用多说了。尤其对新手来讲,写C++代码都不知道有哪些东西可以调用,更别谈写高效的C++代码了。因此,对新手来说,学习BP是必须的。其最重要的作用,就是让UE4新手能快速的掌握引擎在代码层面提供的功能。

    然而,在认识到这一点之后,我并没有立即开始BP的学习,而是先学习了一下如何让C++代码与BP交互,具体的知识少不了要自己去看官方文档,我这里只是列出我的经验。

    还要提一下:凡是能放到unreal场景里的东西都是Actor对象,对应C++里的AActor类型。Actor只是一个壳,它提供的所有功能都是由它包含的Component来提供的,不同的Component能提供不同的功能,最后表现出来的就是Actor具有所有这些Component提供的功能。Component的总分类,见链接,这个和Unity中的组件有些类似。我能保证这里的文档真正看懂的话,C++编程的部分从动手方面来讲不存在任何问题了。接下来看BP文档那一章,掌握BP也没有任何悬念,而且是很快乐的过程,不会有任何难度。

    215337nduj0u6qotdn6on6

    #5)GamePlay

    关于游戏模式,这里的文档也需要在看BP前提前阅读一遍 :

    215337fee8jelj5xjlj78b

    这里也有一张脑图,大家看看:

    (点击图片看大图)

    220522vfvwvt94ukm7vmvl

    展开全文
  • unreal4 中文入门教程,该系列浅显易懂,特别适合那些有些C++基础的同学作为unreal4入门教程。 区别于那些动辄几十集的视频教程,这套系列中文图文教程 能节省您大量的观看时间。

    首先要说的是,游戏开发是一项高度复杂的代码开发工作,编程语言只是最基本的知识,它涉及的内容还有计算机图形学、3D数学、物理学等复杂的学科。但是若需要学完这么多知识才能开发游戏,恐怕许多人都已经断气了,更谈不上开发游戏了。所以前人就把各种复杂的代码封装起来,使得一般的游戏开发者可以更加接近游戏的逻辑和功能性方面的代码,而无需接触最底层的知识。

    194023hhhqhbpcqpmpltad

    所以说游戏引擎,可以是引擎开发者已经写好的一堆代码框架,使得我们可以去调用这些底层代码,也可以是像虚幻4还附带可视化关卡编辑器的工具(Unity3D也是可视化的游戏引擎,后面会谈当今主流游戏引擎的对比)。

    为什么选用虚幻4引擎?

    首先,现在流行而且出名的商业引擎主要有cocos2dx,Unity3D,UE4,CryEngine等。但是这里选择UE4,也有笔者认为的独特优势。

    1) UE4是开源的。开源就是代码是完全开放的,为什么开源如此重要?一方面是因为只有我们看到源代码的实现细节,当出错了我们才能快速准确地判断出错的成因,节省被错误折腾的时间。(你想想像Unity3D这种闭源引擎,要是出错了,你是完全看不到为什么会发生错误的。除了不断盲目Debug,查文档和谷歌之外自己对于错误束手无策。)另一方面,开源可以使得我们深入学习引擎的原理,只知其然不知其所以然必然不能走得太远,而且会走得更痛苦。

    2) UE4的画质是世界上数一数二的。游戏的画质往往由游戏引擎来决定的,一个好的游戏引擎它可以模拟出极度逼真或者极具美感的画面。读者可以自己去看看Unity3D制作的游戏和UE4制作的游戏,其精美程度是相差甚远的。(这里并不是完全指责Unity3D,毕竟它们面对的是不同的层次。)作为一名追求极致的游戏程序员,当然要想看看最好的效果是怎么实现的。

    3) UE4免费!无需多言,还有比免费更好的事吗?

    下图为UE4游戏引擎制作出来的极度逼真游戏画面,你分得清这是不是现实吗?

    虚幻4游戏引擎有何强大之处?

    第一代虚幻游戏引擎(英文名是Unreal Engine,简写UE)在1998年由Epic Games公司发行。当时Epic Games公司为了适应游戏编程的特殊性需要而专门为虚幻系列游戏引擎创建了一种名为UnrealScript的编程语言,该语言让这个游戏引擎变得非常容易方便,因而这个游戏引擎开始名声大振。

    接着,2002年,Epic发布了下一代游戏引擎UE2。这时候,在虚幻引擎提供的关卡编辑工具UnrealEd中,能够对物体的属性进行实时修改。它也支持了当时的次世代游戏机,像PlayStation2,XBox等。

    到了2006年,Epic发布了下一代游戏引擎UE3,这可能是最受欢迎和广泛使用的游戏引擎。这时候的UE3又发布了一个极其重要的特性,那就是Kismet可视化脚本工具,Kismet工作的方式就是以用各种各样的节点来连接成一个逻辑流程图。其最牛逼的地方在于,使用Kismet你甚至不需要掌握任何编程知识。你可以借助Kismet使得不需要写一行代码来开发一个完整的游戏。 

    到了2014年5月19日,Epic发布了Unreal4,目前最新也是Unreal4。这次版本换代也是有了巨大的改变,它已经完全移除了UnrealScript语言,并且用C++语言来代替它。在之前的版本,如果你想修改这个引擎来开发你自己的游戏,你必须用UnrealScript,也就意味着你要学习一门新的语言。不过现在,如果你要修改这个引擎,你可以用C++来完成。这对于绝大部分习惯于C++的游戏引擎工程师来说,使用自己热爱的C++语言来工作,绝对是一件天大的喜事啊。 

    不但如此,游戏引擎的源代码已经可以从Github开源社区下载。这意味着开发者对游戏引擎有着绝对的控制权,实质上你可以修改任何任何东西,包括物理引擎、渲染和图形用户界面。 

    它也提供了一些叫热更新的功能。什么叫热更新呢?通常,如果你想对游戏的代码进行一些修改,你必须要停止游戏才能进行修改,然后再次运行看看修改后游戏的效果。然而,使用热更新功能,你可以修改游戏而不需要停止或暂停游戏。任何在游戏代码的改变会即时更新,并且你可以看见它会在游戏中实时反映出来。 

    UE4是跨平台的,你可以用来制作Xbox One、PlayStation4(包括索尼的Project Morpheus虚拟现实设备),Windows PC,Linux,Mac OSX,HTML5,iOS和安卓,就连虚拟现实设备Oculus Rift也支持。 

    另一个重大的改变是,在2015年初,虚幻4已经可以完全免费下载和使用了,之前的版本是需要支付一定费用的。现在,你可以用来开发游戏,并且发行,而且不需要为UE4游戏引擎支付一分钱。只有在你赚到了3000美元收益之后,你才需要支付5%的技术使用费。 

    另一个UE4提供的特性是商城,你可以在商城中购买和上传游戏资源。这些游戏资源可以包括动画,3D建模,材质,声音效果,预制游戏等等。这也是一个令没有游戏资源或者没有人力来开发资源的开发者振奋的消息。它们可以商场购买并直接应用于自己的游戏中。开发者也可以上传自己的工作成果到商城来赚钱。 

    这个虚幻4小白系列教程,是面向于没有使用过UE4的新手,但需要一点点C++的知识(但也无需太多,一般读过任何一本C++教材都能看懂本教程)。我们从非常基础的下载安装引擎开始,到更高级的上传作品到谷歌PlayStore,都会涉及。我们会使用UE4来一步一步地制作我们的游戏,Let’s Start From it,你的游戏开发之路!

    下图为UE4游戏引擎制作出来的官方示例宣传视频画面:



    展开全文
  • 当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔...1) 点击文件 --> 新建C++类。 2) 选择Game Mode(游戏模式)。 3) 将其命名为“MyGameMode1”。

    201922rb1l3syoyu1glbys

    当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔。这一节,我们要使得开始的角色是我们的一个Avatar类的实例对象,并且使用键盘控制我们的角色。

    创建游戏模式类

    1. 创建游戏模式的步骤如下:
    1) 点击文件 --> 新建C++类。
    2) 选择Game Mode(游戏模式)。
    3) 将其命名为“MyGameMode1”。
    4) 点击创建类。

    什么是GameMode?GameMode包含了各种各样的游戏规则和让游戏引擎描述这个游戏是怎么玩的。

    2. 创建游戏模式的蓝图
    UE4会自动启动VS开发环境,然后我们来创建MyGameMode1蓝图:

    1) 如图所示操作:

    2) 填写蓝图名称,我这里是“BP_GameMode1”,然后点好。

    3) 从右侧的细节面板中的Default Pawn Class的下拉选项中选择上次我们创建好的角色蓝图BP_Avatar。

    什么是Default Pawn Class?Default Pawn Class就是被角色使用的那一类物体,也就是可以被玩家控制的Actor角色。

    4) 点击工具栏的保存,然后退出。

    现在运行游戏的话,你可以看到我们使用的摄像头已经是BP_Avatar角色所包含的摄像头了。但是现在还是控制不了角色,因为我们还没设置控制器输入。

    设置检测键盘输入

    1) 点击工具栏的设置,然后点击项目设置。


    2) 接下来,点击左侧面板的输入,然后在Axis Mappings(按键映射)后面点击加号,再点击前面的小三角形展开。输入一个名为Forward(前进)的按键映射,然后下面选择W键。接着再添加一个名为Back(后退)的按键映射,然后下面选择D键。Left(左移)对应A键,Right(右移)对于D键。

    3) 直接关闭该窗口以保存设置。

    通过C++代码控制角色行走

    1) 现在打开你的VS里面的Avatar.h构造器,添加五个成员函数的声明:
    1. //添加如下三个成员函数,用于角色控制:
    2. void SetupPlayerInputComponent(class UInputComponent* InputComponent) override; //覆写虚函数,当有输入的时候被调用以绑定功能
    3. void MoveForward(float amount);
    4. void MoveBack(float amount);
    5. void MoveLeft(float amount);
    6. void MoveRight(float amount);
    并删除原有的这一行:
    virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;

    2) 然后在Avatar.cpp完成函数体定义:
    1. //游戏开始时被调用以绑定设备输入功能
    2. void AAvatar::SetupPlayerInputComponent(class UInputComponent* InputComponent)
    3. {
    4. check(InputComponent); //检查空指针
    5. InputComponent->BindAxis("Forward", this, &AAvatar::MoveForward);
    6. InputComponent->BindAxis("Back", this, &AAvatar::MoveForward);
    7. InputComponent->BindAxis("Left", this, &AAvatar::MoveRight);
    8. InputComponent->BindAxis("Right", this, &AAvatar::MoveRight);
    9. }
    上面的InputComponent::BindAxis(...)函数用于将按键信息于函数调用绑定。例如当玩家按下W键,引擎就会检测到有我们之前命名的"Forward"按键信息,然后自动去调用当前类的AAvatar::MoveForward(float amount)函数。其它三个按键也是如此运作。所以接下来定义好这四个函数就可以了,这里的参数amount是设备输入量经过与scale相乘后得出的结果:
    1. void AAvatar::MoveForward(float amount)
    2. {
    3. // Controller控制器当前拥有该actor。例如如果当前角色死了,actor不存在了,此时Controller控制器没有拥有任何一个actor,那么如果我们还想去控制它,就会出错。
    4. // 如果控制器没有拥有actor或者移动量是0,不能进入该函数。
    5. if (Controller && amount)
    6. {
    7. // GetActorForwardVector()取得角色向前的向量
    8. FVector fwd = GetActorForwardVector();
    9. // 我们调用AddMovementInput来在‘fwd’向量的方向上移动角色‘amount’个单位
    10. AddMovementInput(fwd, amount);
    11. }
    12. }
    13. void AAvatar::MoveBack(float amount)
    14. {
    15. if (Controller && amount)
    16. {
    17. // GetActorForwardVector()取得角色向前的向量,加上负号,该向量就向后,所以取得了角色向后的向量
    18. FVector back = -GetActorForwardVector();
    19. AddMovementInput(back, amount);
    20. }
    21. }
    22. // 后面的函数类似前面,很容易懂
    23. void AAvatar::MoveLeft(float amount)
    24. {
    25. if (Controller && amount)
    26. {
    27. FVector left = -GetActorRightVector();
    28. AddMovementInput(left, amount);
    29. }
    30. }
    31. void AAvatar::MoveRight(float amount)
    32. {
    33. if (Controller && amount)
    34. {
    35. FVector right = GetActorRightVector();
    36. AddMovementInput(right, amount);
    37. }
    38. }

    设置检测鼠标移动

    接下来我们用第二步同样的操作打开项目设置并添加Yaw和Pitch按键信息,分别对应的是鼠标的X坐标和Y坐标。

    注意Yaw的意思是绕竖轴旋转,Pitch的意思是绕横向轴旋转。见下图:

    通过C++代码控制角色镜头

    在Avatar.h你需要添加两个函数声明:
    1. void Yaw(float amount);
    2. void Pitch(float amount);
    然后在Avatar.cpp中实现它们:
    1. void AAvatar::Yaw(float amount)
    2. {
    3. if (Controller && amount)
    4. {
    5. // AddControllerYawInput()函数用于改变控制器的Yaw变量,即增加纵向轴旋转量。
    6. // GetWorld()函数取得世界指针UWorld*,通过世界指针调用GetDeltaSeconds()取得每帧耗费的时间。
    7. // 之所以要乘以每帧耗费的时间,是为了使得每一【秒】都增加200.0f * amount的改变量。
    8. // 如果不乘以每帧耗费的时间,那么每一【帧】都会增加200.0f * amount的改变量。(注意由于每秒渲染量不同,所以每秒的帧数不一定是固定的。)
    9. // 通过帧数来控制变量,那么游戏看起来就不那么流畅。试想,机子性能好的时候游戏角色动作就迅速,机子性能差的时候游戏角色动作就慢,这对于玩家公平吗?
    10. AddControllerYawInput(200.f * amount * GetWorld()->GetDeltaSeconds());
    11. }
    12. }
    13. // 下面的函数与上面雷同,不再赘述
    14. void AAvatar::Pitch(float amount)
    15. {
    16. if (Controller && amount)
    17. {
    18. AddControllerPitchInput(200.f * amount * GetWorld()->GetDeltaSeconds());
    19. }
    20. }
    在void AAvatar::SetupPlayerInputComponent(class UInputComponent* InputComponent)函数体的下面添加这两条语句将输入信息和函数绑定:
    1. InputComponent->BindAxis("Yaw", this, &AAvatar::Yaw);
    2. InputComponent->BindAxis("Pitch", this, &AAvatar::Pitch);

    完整代码贴出

    Avatar.h完整代码如下:
    1. #pragma once
    2. #include "GameFramework/Character.h"
    3. #include "Avatar.generated.h"
    4. UCLASS()
    5. class DEMO1_API AAvatar : public ACharacter
    6. {
    7. GENERATED_BODY()
    8. //添加如下五个成员函数,用于角色控制:
    9. void SetupPlayerInputComponent(class UInputComponent* InputComponent) override; //覆写,游戏开始时被调用以绑定设备输入功能
    10. void MoveForward(float amount);
    11. void MoveBack(float amount);
    12. void MoveLeft(float amount);
    13. void MoveRight(float amount);
    14. void Yaw(float amount);
    15. void Pitch(float amount);
    16. public:
    17. // 设置角色属性的默认值
    18. AAvatar();
    19. // 当游戏开始的时候被调用
    20. virtual void BeginPlay() override;
    21. // 每帧被调用
    22. virtual void Tick( float DeltaSeconds ) override;
    23. };

    Avatar.cpp完整代码如下:
    1. #include "Demo1.h"
    2. #include "Avatar.h"
    3. // 设置默认值
    4. AAvatar::AAvatar()
    5. {
    6. // 设置这个角色每帧调用Tick()。 如果不需要的话你可以关掉它以提高性能。
    7. PrimaryActorTick.bCanEverTick = true;
    8. }
    9. // 当游戏开始时调用它
    10. void AAvatar::BeginPlay()
    11. {
    12. Super::BeginPlay();
    13. }
    14. // 每帧被调用
    15. void AAvatar::Tick( float DeltaTime )
    16. {
    17. Super::Tick( DeltaTime );
    18. }
    19. //游戏开始时被调用以绑定设备输入功能
    20. void AAvatar::SetupPlayerInputComponent(class UInputComponent* InputComponent)
    21. {
    22. check(InputComponent); //检查空指针
    23. InputComponent->BindAxis("Forward", this, &AAvatar::MoveForward);
    24. InputComponent->BindAxis("Back", this, &AAvatar::MoveForward);
    25. InputComponent->BindAxis("Left", this, &AAvatar::MoveRight);
    26. InputComponent->BindAxis("Right", this, &AAvatar::MoveRight);
    27. InputComponent->BindAxis("Yaw", this, &AAvatar::Yaw);
    28. InputComponent->BindAxis("Pitch", this, &AAvatar::Pitch);
    29. }
    30. void AAvatar::MoveForward(float amount)
    31. {
    32. // Controller控制器当前拥有该actor。例如如果当前角色死了,actor不存在了,此时Controller控制器没有拥有任何一个actor,那么如果我们还想去控制它,就会出错。
    33. // 如果控制器没有拥有actor或者移动量是0,不能进入该函数。
    34. if (Controller && amount)
    35. {
    36. // GetActorForwardVector()取得角色向前的向量
    37. FVector fwd = GetActorForwardVector();
    38. // 我们调用AddMovementInput来在‘fwd’向量的方向上移动角色‘amount’个单位
    39. AddMovementInput(fwd, amount);
    40. }
    41. }
    42. void AAvatar::MoveBack(float amount)
    43. {
    44. if (Controller && amount)
    45. {
    46. // GetActorForwardVector()取得角色向
    转自:http://www.52vr.com/article-562-1.html



    展开全文
  • Unreal4 入门(安装)

    千次阅读 2017-09-25 15:23:50
    在Win7下安装Unreal4 在Win7下安装Unreal4需要以下几个步骤: 1. 打开“控制面板”的“程序和功能” 检查是否已安装 Microsoft Visual C++ 2010 Redistributable ,请同学们先卸载掉,否则下面安装...
    一. 在Win7下安装Unreal4
    在Win7下安装Unreal4需要以下几个步骤:
    1. 打开“控制面板”的“程序和功能” 检查是否已安装 Microsoft Visual C++ 2010 Redistributable ,请同学们先卸载掉,否则下面安装DXSDK_Jun10时会出现Error Code:S1023的错误。(卸载完成一定要重启电脑 不然还会出现Error Code:S1023的错误) 如果没有安装的同学请继续下一步
    2. 安装DXSDK_Jun10 如果出现下图所示错误Error Code:S1023 请先完成第一步。
    3. Win7下还需要安装 Windows 7 SP1(Service Pack 1) KB976932 补丁(windows6.1-KB976932-X64.exe)补丁可以从微软上下载(大概903MB)
    4. 安装完Windows 7 SP1(Service Pack 1) KB976932 补丁后就接下需要安装10以上版本的InternetExplorer浏览器。大概就是ie11_windows6_1_x64_zh_cn.exe 的一个安装程序。
    附下载地址 Internet Explorer 11(http://windows.microsoft.com/zh-cn/internet-explorer/ie-11-worldwide-languages)
    5. 以上4步完成后就可以安装高端大气上档次的VisualStudio2013,也可以选择安装VisualStudio2012看个人喜好但是VisualStudio2013是Unreal4Engine引擎开发IDE所以UE4对VS2013支持的最好,还有很多插件呦。
    6. 最后一步就是安装UE4了,直接安装UnrealEngineInstaller-1.0.0-2039063.msi文件。桌面或者安装路径的Unreal Engine\Launcher\Engine\Binaries\Win64\UnrealEngineLauncher.exe 可以直接运行啦。
    7. UnrealEngineLauncher是一个引擎用户验证登陆器,使用了增量更新机制(哈哈 做游戏的更新机制已经给大家展现出来,具体能有多强大还需要好好研究一下)。在(https://www.unrealengine.com/blog/welcome-to-unreal-engine-4)Unreal4官网注册一个账号就可以登录。
    我在淘宝花了120大洋找人代付了1个月的会员,还购买了一个月的GreenVPN。准备好好研究下喽
    会员登陆后还需要更新一个4.0.2的包大概7个G左右(嘿嘿 知道为什么买VPN了吗 - -!)
    二. 在Win8/Win8.1 下安装Unreal4
    1. 依然首要问题安装DXSDK_Jun10时会出现Error Code:S1023的错误。只要按照Win7下安装的第一步解决就OK了,一定不要忘记卸载完要重新启动计算机呦。
    2. 安装Visual Studio 2013或者Visual Studio 2012,个人建议选择VS2013许多新特性很适合Unreal4,而且UE4对Visual Studio 2013支持的比较好。
    2. 就可以直接安装UnrealEngineInstaller-1.0.0-2039063.msi文件了。
    三. 其他方式安装Unreal4 Engine
    算是小福利喽,不想付费又对UE4感兴趣的同学可以看下面方法,但是不确保链接总是会有效喔。
    Unreal4源码包下载链接(http://pan.baidu.com/s/1qWCYkz)
    引擎资源包(一)下载链接(http://pan.baidu.com/s/1eQzfwo)
    引擎资源包(二)下载链接(http://pan.baidu.com/s/1dD5Tcn)
    1. 下载好Unreal4源码后先将压缩包解压缩,得到UnrealEngine-4.0.1-release文件夹,然后需要把引擎资源包(一)和引擎资源包(二)下载后解压到UnrealEngine-4.0.1-release文件夹下覆盖相应目录文件。
    2. 安装DXSDK_Jun10.exe,如果出现下图所示错误Error Code:S1023 请同学们看一下上面Win7安装Unreal4的第一步骤。
    3. 安装完DXSDK后,双击UnrealEngine-4.0.1-release目录下的GenerateProjectFiles.bat文件,等待差不多1分钟后点击目录下的Ue4.SLN(VisualStudio2013的工程文件)
    4. 然后就可以用VisualStudio2013打开工程文件可以进行编译了,编译时间会很长根据每位同学机器配置会有差异基本上15分钟就可以搞定,请同学们耐心等待。编译完成后就可以在 \UnrealEngine\Engine\Binaries\Win64目录找到UE4Editor.exe等运行文件啦。
    小结:官方说现在还是未优化版本,稳定版请等待几个月会推出4.1版本(版本更新说明已经在我博客上贴出来 感兴趣的可以去看下),虚幻4运行配置较高,大家赶紧去体验吧。
    展开全文
  • epic games宣布ue4免费使用(游戏发布之后,每个季度大于3000美元则收取收益的5%)之后,吸引了大批看好VR和AR前景的游戏...本人也是第一次接触ue4,甚至除了在大学学的c++基础,毕业3年还没碰过c++,所以先将官网的g...
  • 为什么使用UE4提供的容器类? 如果你用过C++的STL库,你就知道STL提供了各种各样的容器/数据结构,使得你对处理很多数据的时候非常快捷高效。UE4同样也提供了类似的库,库里面的类型是以T开头的,使用UE4提供的...
  • UE4中,除了TArray动态数组外,还提供了各种各样的模板容器。这一节,我们就介绍集合容器——TSet。类似于TArray,尖括号里面的T是模板类型,可以是任何C++类型。一个集合表示了一组互不重复的数据元素。比如TSet...
  • 为了展示对话框,我们需要自定义一个HUD(heads-up display,即平视显示器)。 什么是HUD? HUD是平面显示界面,就是...1) 点击文件-新建C++类; 2) 选择从HUD类继承来创建我们自己的类; 3) 给你的类命名,
  • 现在我们来创建一些NPC...1) 在UE编辑器中,打开文件-新建C++类,选择从Character(角色)类继承,然后命名子类为NPC。 2) 编写代码。打开NPC.h文件: 添加头文件:(注意包含头文件必须在#include "NPC.generat
  • Unreal Engine使用C++入门示例

    千次阅读 2017-02-28 09:45:08
    epic games宣布ue4免费使用之后,吸引了大批看好VR和AR前景的游戏开发者。不过国内ue4教程和资料太少,而且一大部分资料都是关于蓝图(Blueprint)的,好在官网放出了guide和demo。更多讨论,可以前往讨论区:...
  • 接下来,我们将会创建一个放置我们的游戏角色的基本场景。 编译UE4编辑器 1) 现在,我们创建一个空白的UE4项目来开始...选择“C++”选项卡。然后从可用的项目列表中选择“基础代码”。在下方点击“...”按钮,设置
  • Unreal Engine4 蓝图入门

    2015-12-22 15:59:00
    微信公众号:UE交流学习 UE4开发群:344602753 蓝图是Unreal Engine的特点,用C++编程固然好,但是效率要低很多,主要是国内资料比较少,所以不太容易学习,用蓝图编程可以节省开发成本,我认为蓝图编程也是可以解决...
  • 在本章中,我们将概述UE4游戏开发入门的基本方案,以及用于创建编写游戏代码的基本工具。 这将包括以下方案:
  • 在UE4中创建关卡很容易,并且周围都有不错的UI可以为您提供便利。 在本小节中,我们将概述基本的编辑器用法,并描述在... 但是,您无需从入门者入手。 如果您不想从中进行构建,则可以将其删除或创建新关卡。 要创...
  • 【七、蓝图快速入门(Blueprints Quick ...蓝图快速入门(Blueprints Quick Start Guide)​docs.unrealengine.com茕兔QIONGTWO:UE4虚幻引擎学习云笔记-目录​zhuanlan.zhihu.com1.蓝图类型●关卡蓝图(Level Bl...
  • 虚幻4C++学习入门书籍This book is an in-depth guide through the process of creating a high quality game from scratch, starting from importing and implementing assets and ending up with packaging the ...
  • ue4 代码入门

    2017-09-06 16:46:00
    ue4 代码入门 官网:暴露游戏元素给蓝图 https://docs.unrealengine.com/latest/CHN/Engine/Blueprints/TechnicalGuide/ExtendingBlueprints/index.html 官网:创建类的基础知识(代码,蓝图,...
  • ue4开发入门教程

    2018-07-17 10:50:00
    想要学习ue4的,可以参考这篇文章作为入门。 学习这篇文章,建议具有一定的C++基础,对游戏有一定了解。 1.首先访问ue4官网:https://www.unrealengine.com/zh-CN/what-is-unreal-engine-4,找到右上角的下载按钮...
  • 2 游戏蛮牛相关资料的整理 :游戏蛮牛 - 手册 - 虚幻引擎4 | UnrealEngine4 二 深入了解虚幻底层原理 1 因为c++自身是没有垃圾回收的,所有虚幻4自己实现了一套垃圾回收机制 :虚幻4垃圾回收剖析 2 同样c++自身...
  • First Person Shooter C++ Tutorial【原文地址】是Unreal官方WiKi上的一个C++案例,按照它的步骤做了一遍,对于UnrealEngine4C++编程入门还是很有帮助的。 我使用的引擎版本是4.10,WiKi上使用的版本更新到4.6,...
  • ue4 c++学习推荐

    2016-02-14 22:10:00
    我由易到难推荐,不过在此之前还是先看看官方对于VS设置的推荐: ... 不推荐看中文版的,因为有错 1、官方的入门教程 https://docs.unrealengine.com/latest/CHN/Pr...
  • [UE4]ue4 c++学习推荐

    2018-03-25 18:43:00
    我由易到难推荐,不过在此之前还是先看看官方对于VS设置的推荐: ... 不推荐看中文版的,因为有错 1、官方的入门教程 https://docs.unrealengine.com/latest/CHN/Pr...
  • 1.双击电脑桌面上的Unreal Engine 2.见下图 建立c++或者蓝图项目: 蓝图是什么? 蓝图种类: 接口: 转载于:https://www.cnblogs.com/allyh/p/10088773.html...
  • 学习的功能官方链接https://docs.unrealengine.com/zh-CN/Engine/Blueprints/QuickStart/index.html​docs.unrealengine.com蓝图快速入门指南蓝图快速入门指南​docs.unrealengine.com以下是心得和总结官方文档让我...
  • UE4 学习

    2019-07-30 17:34:00
    1、官方文档:... (1)C++ 程序员如何入门 UE 4:https://blog.csdn.net/zhengliuguo/article/details/80551836  (2)入门教程(带源码)10篇:https://www.raywenderlich.com/lib...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

c++unreal4入门

c++ 订阅