转自:
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,但现在不在我的学习列表内,慢慢来吧,后面再改。