UE4 学习初步 1、项目相关、蓝图、UI
项目相关
项目文件里的内容(红色为非必须文件):
Config:配置文件,引擎被拆分成很多小部分,用这些小部分组合成一个自定义的虚幻四引擎;
Content:内容文件;
DerivedDataCache(DDC):共享缓存文件,快速启动;
Intermediate:FBuild共享编译,共享编译;
Plugins:插件;
Saved:子文件夹Logs里有输出日志;
XX.json:链接文件,拼接自定义的引擎和插件;
XX.uproject:项目文件,启动项目;
蓝图(图形化编程,习惯就好😔)
有点像matlab的simulink,有点像自动化控制的信号流图,有点像数电的硬件电路图,一个个模块的输入输出引脚。
访问变量:get\set方法(函数)
函数:需要返回值记得自己加return节点。
宏、函数、事件区别:宏——编译前替换字符串代码,C++尽量用inline函数代替,不清楚蓝图的macros是inline func还是macros。尽量用另外两个
function:单线程,从输入节点到return节点(可能没有)(左到右)执行类似写的代码从上到下执行。没有delay延时,可以设置局部变量,会等待返回值然后执行之后的节点
graphs(事件图表):可以多线程执行,无返回值。
construction scrip:构造脚本,理解成这个蓝图类的构造函数就行。(美术都把位置缩放旋转这些基础属性设置好了,构造函数里可能会初始化其他值)
几个常用事件和函数:
理解为会触发构造函数、析构函数、在项目编译运行前生效触发构造函数?
Event Construct、Event Destruct、Event Pre Construct
Event Tick:每帧触发的事件
Set Timer by Event:设置定时器持续调用一个事件
两个蓝图类常用通信方法:
(直接)
1、Event Construct:创建该蓝图时获取目标蓝图并保存为类变量,Get All Actors of Class(Out Actors引脚输出为数组---get)
(该方法搜索消耗资源和时间,其结果构造时保存为数组,析构时销毁)
2、目标的details里打上tags标签,工作蓝图使用get all actors with tag,其结果保存数组
3、自定义转换cast to,两个类不能转换则工作流执行cast failed
4、蓝图接口,便于实现多态。
5、需要在123的情况下,将目标蓝图的事件和触发方的信号调度器绑定,类似QT的connect绑定信号和槽函数
基本流程控制:
switch on 类型:相当于自带break,不会执行两条输出语句。
if:branch 分支
select:选择 汇合
并发:sequence
循环:a)输出引脚Loop Body和Completed等同于 for(){循环体} 循环完毕 b)reverse 倒叙循环
while:while loop
for:for loop 输出引脚Index可以显示当前是第几个循环
for each loop: Element 输出当前数组元素的值
do once:做一次,输入引脚自带重置和第一次是否开启
do N:循环几次
Flip Flop:交替执行
Gate和MultiGate:门——参考电路,Open时,enter输入才有Exit输出;Close时,无输出;Toggle交换。
delay和Retriggerable:Duration输入单位秒,后者可以一直被触发(一直有输入信号,那么延迟时间一直为duration的值)
UI
导入:
1、打开关卡界面蓝图
2、event BeginPlay事件,链接 create BP UI Widget,再链接add to viewport;
3、在Create BP的输入class项点击浏览按钮,跳转到内容浏览器选择需要的UI,或者手打UI蓝图的名字。
按钮样式:
右边details框,点击Appearance,style,normal,Image选择需要的图片。