发布时间:2018-08-31责任编辑:满帅 浏览:3178
虚幻引擎中的蓝图可视化系统是一个完整的游戏脚本系统,其理念是使用基于节点的界面从虚幻编辑器中创建游戏可玩性元素,该系统非常灵活且非常强大,因为它为设计人员提供了一般仅供程序员使用的所有概念及工具。它是一种特殊类型的资源,为关卡设计师和游戏开发人员提供了一种在编辑器中快速创建及迭代游戏可玩性的工具。
通过使用蓝图,设计人员几乎可以创作任何游戏元素的原型,以及实现或修改这些元素。
从蓝图的基本形式上讲,蓝图是针对您游戏添加的可视化脚本。通过使用连线把节点、事件、函数及变量连接到一起,这样就可以创建复杂的游戏性元素。蓝图通过各种用途的节点构成图来进行工作,这些节点包括针对蓝图每个实例的对象构建、独立的函数、一般的游戏性事件,从而实现各种行为及其它功能。
蓝图与普通脚本语言一样,同样分为几大模块
流程控制:
Delay:延迟执行
RetriggerableDelay:事件行为设置时间内再触发会从头统计Delay时间。
Branch:if...else
DoOnce:执行一次
DoN:执行N次
DoOnce MultyInput:多项执行一次
FlipFlop:交替执行
Gate:执行由开关决定
MultyGate:依次或随机执行多个结果
Sequence:同时执行多个结果
数组(以下命令从数组中拖出):
Length:打印数组长度
Get:获得数组里的某个索引值
Set Array Element:设置数组里的某个索引值
Add :动态增加数组索引并为其赋值
AddUnique:新增索引并添加不重复的值,值重复则不添加
Insert:动态插入索引并为其赋值
RemoveIndex:移除某个索引
RemoveItem:移除相同值的索引
FindItem:通过查找赋值返回索引
ContainsItem:检查数组中有无某值,返回布尔值
LastIndex:返回数组中最后一个索引
Resize:重新分配数组长度
Clear:清空数组索引
ForEachLoop:遍历
ForEachLoopBreak:遍历至特定值就结束
Shuffle:打乱数组与索引的赋值
结构体:
结构体数组:新建结构体A,在蓝图的某个变量中选择该结构体A,.并使其变成数组。
二维结构体数组:新建结构体B,在结构体B的设置面板,把第一个变量设置为已创建的结构体A。
三维结构体数组:只要把包含B结构体的变量变为数组就是三维了。
BreakStruct:拆分结构体
MakeStruct:设置结构体里各元素的值
SetMembersInStruct:同上,需打开要设置的元素
Add:添加结构体。改变某个值以后,执行时自动添加。
SetArrayElement:替换某个元素里面的值
AppendArray:两个数组相加。表现在第一个相连的数组上。
变量
和代码中的变量是一样的,蓝图也有变量,共有私有的区分,可编辑不可编辑(常量),变量类型,变量与变量之间的类型转换,引用类型,静态的变量,容器。
定义新变量
方法1:在左侧的变量列表上点击增加变量按钮
方法2:在蓝图操作界面中,在某个变量的引脚处右键,在弹出的菜单中点击提升为变量。
变量类型
可以选择的变量类型有:
常用类型
int
float
boolean
string
text
字节(0-255)
vector(xyz)
rotator(旋转)
transform(位移+旋转+缩放)
结构体
类
枚举类型
接口
普通类型转换
如果2个变量之间可以进行转换,那么就直接把2种类型的变量引脚相接,中间会自动产生一个转换节点。
引用和类
如果在世界中存在这个类的实例,并且想用这个实例,就用引用类型。
如果在世界中不存在这个类的实例,就用类类型。
当然简单可以这么理解,具体看实际需要。
枚举类型
如果要使用自定义枚举类型,需要在内容编辑器中,提前建立一个枚举类型的文件,然后才能在蓝图类中选择到自定义类型。
变量的get和set
对于基本类型和结构体类型的get和set用法上,可以简单的理解为,get就是获取变量的值,set就是设置变量的值。
对于类类型或引用类型来说,可能就比较复杂了:
get引用可以理解为得到一个实例化对象,get类类型可以理解为得到了这个类型的结构,如果在这个类本身的蓝图中使用类类型,则相当于用了代码中的this关键字。
set引用相当于替换对象,set类类型,还没试过。set类类型里面的属性,比如一个任务的材质(材质也是一个类),需要先get类类型,然后get metarial,然后create dynamic metarial interface,set新变量,变量类型为材质类,用新的材质替换旧的材质,而不是直接修改材质。
容器
在变量类型的旁边有个网格小按钮,点击开启后,这个就是对应类型的数组变量了。
接口和事件
蓝图类可以继承其他蓝图类或C++写好的类,同样可以继承蓝图接口,而且是多继承哦,这就可以通过定义蓝图接口,规范子类方法的定义。
事件就是一个用来触发的入口,比如单击事件,开始事件,时钟事件
蓝图接口
步骤:
在内容编辑器中,新建蓝图接口
定义方法名,入参出参,所属目录类型
在新建的蓝图类中,点击类设置,选择继承某个接口,
在蓝图中实现接口中的类,这时,接口方法会变成事件的形式存在于新的蓝图类中.
蓝图既然是ue4的一个可视化脚本,那么是可以互相调用的,c++代码中只要加上UCLASS(BLUEPRINTABLE)即可将c++实现的类,在蓝图中变为蓝图类.
总结:蓝图是ue4中一个非常强大的功能,大大解放了程序员编写代码的时间,通过蓝图,可以做出大部分游戏,甚至有的都不需要写C++代码,目前本人对蓝图的了解还趋于表面,还不能做到较为精深的讲解,只待以后.
游戏开发组 供稿