[UE4教程] UE4蓝图总结(入门)

  • Post author:
  • Post category:其他


转自:

http://www.manew.com/thread-90908-1-1.html

使用引擎版本:4.10.2

这篇总结一下蓝图的基本使用,有的内容没有配图,所以需要自己去操作一下。


变量


和代码中的变量是一样的,蓝图也有变量,共有私有的区分,可编辑不可编辑(常量),变量类型,变量与变量之间的类型转换,引用类型,静态的变量,容器。


定义新变量


方法1:在左侧的变量列表上点击增加变量按钮

方法2:在蓝图操作界面中,在某个变量的引脚处右键,在弹出的菜单中点击提升为变量。


变量类型


可以选择的变量类型有:

常用类型

int

float

boolean

string

text

字节(0-255)

vector(xyz)

rotator(旋转)

transform(位移+旋转+缩放)

结构体



枚举类型

接口


普通类型转换


如果2个变量之间可以进行转换,那么就直接把2种类型的变量引脚相接,中间会自动产生一个转换节点。


结构体变量类型的break和make


在蓝图编辑器界面中。从一个变量类型的引脚拖出选择菜单,搜索break方法或make方法,通过这2个方法,可以对结构体变量内的基本类型或结构体类型,进行拆分或组合,从而达到类型转换的效果。


引用和类


如果在世界中存在这个类的实例,并且想用这个实例,就用引用类型。

如果在世界中不存在这个类的实例,就用类类型。

当然简单可以这么理解,具体看实际需要。


枚举类型


如果要使用自定义枚举类型,需要在内容编辑器中,提前建立一个枚举类型的文件,然后才能在蓝图类中选择到自定义类型。


变量的get和set


对于基本类型和结构体类型的get和set用法上,可以简单的理解为,get就是获取变量的值,set就是设置变量的值。

对于类类型或引用类型来说,可能就比较复杂了:

get引用可以理解为得到一个实例化对象,get类类型可以理解为得到了这个类型的结构,如果在这个类本身的蓝图中使用类类型,则相当于用了代码中的this关键字。

set引用相当于替换对象,set类类型,还没试过。set类类型里面的属性,比如一个任务的材质(材质也是一个类),需要先get类类型,然后get metarial,然后create dynamic metarial interface,set新变量,变量类型为材质类,用新的材质替换旧的材质,而不是直接修改材质。


容器


在变量类型的旁边有个网格小按钮,点击开启后,这个就是对应类型的数组变量了。


流程控制foreach和for


这2个循环的在蓝图中是怎么体现的呢?入参引脚部分是数组变量,跳出条件,或循环开始/结束值。出参引脚部分是元素,元素index,循环体引脚,完成循环引脚。

方法名:

ForEachLoop

ForEachLoopWithBreak

ForLoop

ForLoopWithBreak

注意如果要用到break,可以在break引脚前加一个自定义事件,在循环体中调用自定义事件,这样逻辑比较清晰。当然了,也可以在循环体中直接一根白线连到break引脚。


while循环


方法名是WhileLoop,当条件成立时循环,当条件不成立时跳出。


自定义流程控制


用户可以自定义流程,比如在while循环的每次执行中添加一个延迟,并变成一个方法,但这种修改引擎内部流程控制的行为,是有风险的。

操作步骤:

在内容浏览器的右下角,勾选,显示引擎内容

在引擎内容中,搜索,StandardMacros

仿照while循环写一个自己的循环,注意添加分类

保存后,在自己的蓝图中调用


接口和事件


蓝图类可以继承其他蓝图类或C++写好的类,同样可以继承蓝图接口,而且是多继承哦,这就可以通过定义蓝图接口,规范子类方法的定义。

事件就是一个用来触发的入口,比如单击事件,开始事件,时钟事件


蓝图接口


步骤:

在内容编辑器中,新建蓝图接口

定义方法名,入参出参,所属目录类型

在新建的蓝图类中,点击类设置,选择继承某个接口,

在蓝图中实现接口中的类,这时,接口方法会变成事件的形式存在于新的蓝图类中


事件


引擎中有很多已经写好的事件,直接用就行了。

用户可以自定义事件,供别的蓝图类调用。

添加自定义事件的操作步骤:

右键呼出目录

搜索custom


事件调度器


通过事件调度器可以进行蓝图与蓝图之间的通信,它可以把一个事件的名字改变成另一个名字。在我测试的时候好像这个通信必须写在关卡蓝图中。


关于构建脚本


这个脚本是默认被创建出来的。什么时候会执行里面的逻辑呢?在每次对象被改变的时候都执行一次,对象被改变包括,被生成,位移,缩放,被修改属性这种操作。


关于事件列表


事件列表中描述了这个对象有哪些事件,常见的事件有beginPlay,tick,如果加上碰撞器组件,可以加个collisionBegin之类的事件,用于响应碰撞器触发。或者,响应玩家的输入,input什么的,按键啊,手柄啊,and so on。


结束语


还有一些蓝图内容没提到,因为我也才刚学,好像还有个BluePrinttable,但现在不在我的学习列表内,慢慢来吧,后面再改。