# 蓝图入门

# 变量类型

蓝图中的类型有:

  • Bool
  • Byte,相当于typedef unsigned char uint8,可常用于存储颜色。
  • Integer
  • Float
  • Name
  • String,常用操作有:
    • Append
    • BuildString
  • Text
  • Vector,常用来表示位置和比例
  • Rotator,常用来表示旋转角度
  • Transform

# 字符串操作

  • RightPad,LeftPad:指定一共多少字符数,如果原字符串不够则填充空格来满足字符数。
  • RightChop,LeftChop:从左往右数,去掉左边的字符数;从右往左数,去掉右边的字符数。
  • Right,Left:从右边往左边数;或从左边往右边数,保留几个字符。
  • replace in line:返回在哪替换掉的字符串
  • replace:返回被替换的字符串
  • ParseIntoArray:切割成一个数组
  • JoinStringArray:合并成一个字符串
  • GetCharacterArrayFromString:将字符串中字符放到一个数组
  • FindSubstring:查找某个子字符串的位置
  • Contains:包含某个字符串
  • Append:组合字符串
  • BuildString:构建字符串

# 相似类型

String,Name,Text比较相近,它们的区别为:

  • FString代表了一种动态的字符串类型数组。
  • FName一旦确定变不会改变,大小写不敏感,它更小且更有效来表示物体的名称,但是不能操作。
  • FText是一种能够本地化的字符串。注意FText没有大小写的,从FName到FText会失真。

注意:

  1. 在蓝图节点中可用Format String格式字符串:"{HPValue},MP:{MPValue}"。
  2. 它们都可从String Table中获取值,来本地化显示。
  3. 如果只是临时使用字符串,可使用蓝图节点,make literal name。
  4. 在蓝图中最常用的肯定是PrintString,用来输出调试信息。Text类型也有Print Text。

# 常用数据结构类型

# 数组

数组常用操作有:

  • Get
  • SetArrayItem
  • Length
  • Add
  • AddUnique
  • Insert
  • Remove
  • RemoveIndex
  • Find
  • Contains
  • LastIndex
  • Clear
  • Resize
  • Shuffle:打乱数组

# 结构体

结构体常用来表示一组类型不同的数组,常用操作有:

  • MakeStruct
  • BreakStruct
  • SetMembersInStruct

# 流程控制

用于流程控制的节点有:

  • Delay:延时,相当于C++中的sleep
  • RetriggerableDelay:在延时内触发的话会重新计算延时
  • Branch:if分支
  • DoOnce:只执行一次,可被重置
  • DoOnceMultiInput:只执行一次,有多个输入,可被重置
  • DoN:执行N次,可被重置
  • Sequence:按顺序执行Then 0,1,2...
  • FlipFlop:翻转切换
  • Gate:可以打开关闭的门
  • MultiGate:从StartIndex开始,后面会随机输出其中一个
  • ForEachLoop:循环遍历数组
  • ForEachLoopWithBreak:循环遍历数组,并且能break
  • WhileLoop:相当于while循环
  • ForLoop:相当于for循环

# Actor信息

常用于获取Actor的Transform信息:

  • GetActorLocation
  • GetActorScale3D
  • GetActorRotation

如果找一个点到另一个点的相对坐标,或者是世界坐标,可用:

  • TransformLocation:从本地转向世界坐标
  • InverseTransformLocation:从世界转回本地坐标

在UE4编辑器中,使用鼠标旋转物体,内部是四元数完成的,但是如果是在面板控制角度旋转,它内部以欧拉角来计算,会出现万向节死锁。

# 示例场景

# 芝麻开门

人物碰到碰撞体时开门,离开后关门。RockDoor,下面是实现细节:

RockDoor

# 随机选择材质

下面是给一堆box随机选择材质例子:

RandomSetMaterial