实习了两个月啦,从开始什么都不会一点点开始学,这两天想做一些整理和总结,希望能帮助到刚刚接触UE的同学~
从蓝图做起
概述
蓝图是UE提供的一种方便快捷的开发方式,它将底层C++的功能封装成了一个个图形化的节点,通过节点之间的相互链接,使得程序
按一定的流程执行。UE也提供了蓝图的官方教程,
通过教程可以快速熟悉引擎的用法。蓝图中提供了流程控制以及大量的基础方法,以获得游戏中你可能用到例如controller,Location等一系列
值,也提供了大量的例如Click,BeginPlay之类的事件方便你在正确的时间调用你的方法。在这个阶段你可能会遇到和我一样的问题,不知道有什么方法可以供我调用,也不清楚应该去什么地方获取想要的方法。
实例
通过Add Component 添加下列组件
设置以下节点
当数字1键被按下时切换镜头
分析
在上面的蓝图中,我们在1被按下的时候通过SetActive方法执行了换镜头的操作,在这个阶段你可能会遇到一个问题:为什么这个方法可以达到我需要的目的,怎么知道在Camera中有SetActive方法,而不是在PlayerColler或者其他的地方。这就需要对UE的框架有一定的了解~
熟悉编程架构
为了克服这个问题,我们需要去了解UE设计中提供的各个组件例如Controller,Pawn,Component都有什么含义,拥有什么功能。通过参考
这篇文章及其子项,可以对游戏中的编程框架有一个
概念上的认识。由于涉及比较多,所以我单独写了一篇文章来介绍。了解之后就大概可以知道我需要的方法/属性应该去哪里去找。
创造你的方法
经历了上面的操作,或许你已经觉得蓝图的操作已经比较熟悉了,但是会发现有一些方法并不能满足我们编程的需求,有时候他们提供了一些你并不
需要的参数,有时候前辈告诉你之前写的蓝图性能损耗很严重。这时候需要一些更富有变化与效率的编程方式来实现我们的工作,这意为着
我们要拿起C++重构我们的代码。UE对于C++做了一些定制,但是要是有C++基础的话熟悉起来也比较快,这里推荐看这篇官方文档。
需要学习主要包括:UE所定义的一些宏的含义与用法、各个组件中包含了哪些方法。在把上一篇文章看完之后就已经理解了蓝图中所暴露出来的方法到底
是从何而来,也可以自己去实现一些方法。当对于一些方法的实现有疑问的时候也知道了应该去哪里寻找答案。
实例
1.创建Character的子类MyCharacter,入口在这里,剩下的步骤可以参照上篇官方文档
2.在头文件中进行声明
3.在BeginPlay的时候对Location进行设置
4.创建Character继承自MyCharacter
5.这时候我们看到C++中设置的bornInCentre属性已经出现在设置里面了
6.运行程序,当勾选的时候人物会从世界中心出生
分析
在刚才的流程中我们做了这几件事情:
- 创建了属于自己的子类,我们可以在这个子类上进行任何我们想做的拓展。但是要注意:拓展的功能应该写在正确的基类下面。例如:玩家控制的逻辑应该放在controller而不是Character中。
- 建立了C++与蓝图之间的通信。
通过头文件之中有这样一行代码UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Leafhan")
这是UE提供的一种宏,意味着我们声明了这个属性是蓝图中可以读写的,类似的宏还有很多,在UE官网中可以查看到更过宏的作用。当然不只是变量,自定义的方法,事件等也都可以通过C++传输给蓝图
达到的目标
通过上面的步骤,我们达到了以下的目的:让C++与蓝图各司其职,运行的逻辑放在C++中,在蓝图中对关键参数进行配置方便测试不同参数下游戏的不同表现,这样在兼顾效率的同时降低了策划调试的成本。
后续呢…
这时候已经可以在项目中做一些简单的需求了,上面介绍的是我所认为的最优先学习的几项通用知识,之后根据需求不同,要去不同的领域继续研究,有很多熟悉类库的需要:人物动作、UI、镜头控制、输入控制…对于一个方向来说:首先在官方文档了解有哪些功能,属性有什么用。之后尝试开始做,遇到一些问题的时候看看源码中是怎么写的,内部有什么机制。想想两个月的时间很短,刚刚熟悉又要离开了。。
资料
UE的参考资料来源比较少,不过还好官网的学习资料很丰富,这里拉了一些我觉得比较重要的,大部分都在文章里提到,这里再提一下
UMG:感觉UMG承担了UI中大部分的职能(自我感觉哈~)
- https://docs.unrealengine.com/latest/CHN/Engine/UMG/UserGuide/index.html 这个目录下的子目录对于UMG中的基本概念进行了很详细的介绍,理解了之后对于之后的学习有很大的帮助
- https://docs.unrealengine.com/latest/CHN/Engine/UMG/QuickStart/index.html 这个目录下的子目录是一个小需求,可以帮助快速入门
- https://docs.unrealengine.com/latest/CHN/Programming/Introduction/index.html 这边文章是UEC++的介绍文章,是我看的doc里面写的最好的一篇!可惜发现的有点晚,不然能省很多的时间
- https://leaf-eater.github.io/2017/09/03/Unreal新手笔记(二)——编程架构/ 相机相关组件这一篇也很清晰,但是父类SceneComponent不再其中,所以刚开始用的时候还有点迷茫。。
希望对于刚刚接触UE的你有所帮助,祝好~
leaf eater