官方
官方文档
虚幻学院(英文教程,未来可能有汉化)
https://academy.unrealengine.com/
官方B站
https://space.bilibili.com/138827797/#/
C++
- 【侯捷】《C++系统工程师》课程
- 【吕鑫】【VS2015】C/C++/数据结构教程(推荐有选择的看)http://class.qq.com/class/22124.html
- 书籍推荐
《C++ Primer Plus》或《Essential C++》或《C++ Primer》
《大话数据结构》或《C++数据结构与算法(目前第4版)》
《Effective C++》
《More Effective C++》
《Effective STL》或《STL源码剖析》
《设计模式》、《游戏编程模式》
《C++沉思录》
《深度探索C++对象模型》
UE4教程
基础操作
- 【官方中文教程:4.15版本】基础操作教程 https://www.bilibili.com/video/av11692668
蓝图编程基础
蓝图编程简介
- 官方文档 http://api.unrealengine.com/CHN/Engine/Blueprints/GettingStarted/index.html
- 大神博客 https://www.cnblogs.com/ghl_carmack/p/5922131.html
蓝图的类型 注:此处的种类只说直接实现游戏逻辑的蓝图,动画蓝图等暂不谈
- 蓝图类 https://blog.csdn.net/niu2212035673/article/details/80207669
- 【猎梦虚幻研究社】 https://mp.weixin.qq.com/s/neCr4ttFIb6w9YZ45T4t3g
- 关卡蓝图 https://blog.csdn.net/niu2212035673/article/details/80204257
- 【猎梦虚幻研究社】 https://mp.weixin.qq.com/s/AAFbScqgIJKOEGFl03I2Xg
变量类型
- 官方文档 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Variables/index.html
- 大神博客 https://blog.csdn.net/niu2212035673/article/details/80148143
注意三种字符型变量:String、Text、Name(适当研究各自的性质及与其相关的操作节点)
三个最常会用到的复杂向量:Vector、Rotation、Transform(适当研究各自的性质及与其相关的操作节点)
UE4的组件
【官方文档】
- 蓝图中的组件 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Components/index.html
- 组建的种类 http://api.unrealengine.com/CHN/Engine/Components/index.html
【猎梦虚幻研究社】
- https://mp.weixin.qq.com/s/HkBHFGM-wr4-mMW-IKVZfg
- UE4的组件系统是学习自Unity引擎的,组件的引入让UE4引擎摆脱了UE3时代难以控制的代码耦合性
事件节点
- 【官方文档】基础事件节点 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Events/index.html
- 【官方文档】自定义事件 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Events/Custom/index.html
事件调度器(事件分配器)
【官方文档】事件调度器的使用
- 创建事件调度器 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/EventDispatcher/CreatingEvents/index.html
- 调用事件调度器 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/EventDispatcher/Calling/index.html
- 绑定及解除绑定事件 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/EventDispatcher/BindingAndUnbinding/index.html
- 使用示例 http://api.unrealengine.com/CHN/Engine/Blueprints/BP_HowTo/EventDispatcher/index.html
- 【大神博客】事件调度器 https://blog.csdn.net/qq_36409711/article/details/76598715 https://blog.csdn.net/qq_14930205/article/details/78636014
事件分配器
- 【官方文档】 UE4的蓝图编程中,所有游戏逻辑的函数都需要通过事件来驱动,而自定义事件可以当做函数来驱动,同时也可以通过事件调度器进行驱动,通过事件调度器,可以让蓝图实现的游戏逻辑更加灵活
流程控制
- 【官方文档】 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/FlowControl/index.html
- 【大神博客】 https://blog.csdn.net/niu2212035673/article/details/80148329
- 流程控制节点,说到底也就是传统编程语言中的选择结构(switch-case、if-else等)和循环结构(for、while等),这些基础的函数结构,正是实现大部分游戏逻辑的核心
蓝图的函数
- 【官方文档】
函数简介
http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Functions/index.html函数调用
http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Functions/FunctionCalls/index.html - 【大神博客】 https://blog.csdn.net/niu2212035673/article/details/80202145
枚举类型
- 【蛮牛译馆】 http://www.manew.com/thread-100301-1-1.html
- 【大神博客】(包含部分关于结构体的操作) https://blog.csdn.net/niu2212035673/article/details/80155380
- 【猎梦虚幻研究社】 https://mp.weixin.qq.com/s/nhmJe9jmy8agrjfc84ABeQ
- 有关UE4Blueprint的枚举类型网上的资料并不多,因为大多数时候枚举类型都会被应用到AI/行为树和C++编程中
蓝图的数组
【官方文档】
- 数组简介 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Arrays/index.html
- 数组操作节点 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Arrays/ArrayNodes/index.html
【大神博客】
蓝图的结构体
【官方文档】
【大神博客】 结构体的使用(包含部分关于枚举类型的操作)
【大神博客】结构体数组及多维数组
- 结构体及结构体数组 https://blog.csdn.net/qq_14930205/article/details/78541532
- UE4的多维数组(用结构体实现)https://blog.csdn.net/qq_14930205/article/details/78541821
【猎梦虚幻研究社】
HitResult
蓝图的容器
Map
【官方文档】
- Map简介 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Maps/index.html
- Map操作节点 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Maps/MapNodes/index.html
- Map使用示例 http://api.unrealengine.com/CHN/Engine/Blueprints/BP_HowTo/WorkingWithMaps/index.html
Set
【官方文档】
- Set简介 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Sets/index.html
- Set操作节点 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Sets/SetNodes/index.html
- Set使用示例 http://api.unrealengine.com/CHN/Engine/Blueprints/BP_HowTo/WorkingWithSets/index.html
蓝图宏
【官方文档】
- 蓝图宏的简述 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Macros/index.html
- 使用宏库(可理解为全局函数库) http://api.unrealengine.com/CHN/Engine/Blueprints/BP_HowTo/MacroLibraries/index.html
【大神博客】
Timeline(时间轴)
- 【官方文档】 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Timelines/index.html
- Timeline是UE4引擎中非常强大且便捷的一个功能函数,它可以实现诸如开关门、视角平滑远近缩放等功能
随机流
- 【官方文档】 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/RandomStreams/index.html
- 随机这个功能很重要,几乎所有游戏的数值计算都会涉及到随机函数
数学表达式
- UE4引擎的蓝图编程中有很多基础的数学表达式节点(如四则运算),且根据不同的操作变量适配有不同的节点,其中更允许开发者自定义一个数学表达式,灵活性非常强
- 【官方文档】 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/MathNode/index.html
蓝图的面向对象
构建脚本(蓝图相对于C++的构造函数)
面向对象特性
继承
多态
- 重写父类函数:在MyBlueprint栏的Function组上方,有一个Override菜单,下拉并选择要重写的函数,派生类中重写的函数会覆盖基类的函数
- 调用重写后的父类函数:右键重写后的函数节点,选择“Add call to parent function”选项
抽象
- 如果了解面向对象思想中的抽象概念,自主按照需求定制蓝图类即可
封装
- 蓝图类中的变量的细节面板中的“Instance Editable”如果打对号(或者MyBlueprint栏中让变量对应的眼睛睁开,即暴露蓝图变量),则当蓝图在关卡中被实例化后,可以通过实例的细节面板进行修改相应变量的值
- 蓝图类中的变量和函数在细节面板中都有Private选项,如果Private打钩,则该变量或函数无法被蓝图类的派生类继承
蓝图通信 注:蓝图通信可以理解为不同蓝图间的信息传递和共享
【官方文档】 蓝图通信方法(没有提GetAllActorOfClass)
【大神博客】 https://www.cnblogs.com/songiveideas/p/learnmore2.html
1、直接蓝图
- 通信(蓝图引用)最直接的方式,但只有需要通信的类都在关卡中有实例时才可以使用【官方文档】http://api.unrealengine.com/CHN/Engine/Blueprints/BP_HowTo/DirectBlueprintComs/index.html
2、事件调度器
- 参考上方“事件节点”
3、蓝图投射(CastTo节点)
- 很常用的蓝图通信实现节点之一,正如官方文档所说,先询问对象“你是否是该对象的特殊版本”,然后再进行通信【官方文档】http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/CastNodes/index.html
4、蓝图接口
- 这种实现方式相对有些复杂,但是某种程度上最不受限制,公众号【猎梦虚幻研究社】针对蓝图接口有几篇不错的文章,可以看看【官方文档】蓝图接口概述 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Types/Interface/index.html
实现蓝图接口 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/Types/Interface/UsingInterfaces/index.html
使用蓝图接口 http://api.unrealengine.com/CHN/Engine/Blueprints/BP_HowTo/Interfaces/index.html
蓝图接口迁移 http://api.unrealengine.com/CHN/Engine/Blueprints/UserGuide/BlueprintComms/InterfaceMigration/index.html
5、GetAllActorOfClass
- 这种方式并不能算是严格意义上的蓝图通信,其作用是通过该节点直接操作某一个类在关卡中所有的实例对象
视频教程
B站
- 虚幻引擎官方 https://space.bilibili.com/138827797/
- 灰太狼不吃羊肉 https://space.bilibili.com/298289600/
- 陶仁贤TRX https://space.bilibili.com/22866318/
- 杨一鸣 https://space.bilibili.com/19045234/
- UE4-谌嘉诚 https://space.bilibili.com/31898841/
- 暂无名讳 https://space.bilibili.com/76555104/
- 来自程序员的暴击 https://space.bilibili.com/128373173/