ue4蓝图个人笔记

向量和一些其他基础

a向量-b向量=c向量(由b指向a的向量)

获取actor向前向量为单位向量

获取actor位置并不是单位向量

点乘(dot)=a向量长度*b向量长度*cos夹角

结果是标量,一般用来判断物体在前方后方(夹角)(向量长度都为1)

cos

(0,1),(派/2,0),(派,-1),(3/2派,0)

cos 0°=1

cos 90°=0

cos 180°=-1

结果为正,则两向量夹角小于90度

结果为负,则两向量夹角大于90度小于180度

叉乘(cross)=a向量长度*b向量长度*sin夹角=(y1z2 - y2z1, x2z1 - x1z2, x1y2 - x2y1)

结果是向量,a叉乘b夹角为顺时针则方向为平面方向向下,逆时针平面方向向上,长度为面积,指向垂直平面的向量

%余数,5%2=1

Append 拼接格式化文本

例子:A值1 B值/ C值2

打印出  值1/值2

子弹加了抛射物组件不能开物理模拟

根组件必须为碰撞才能启用反弹

布尔值的运算

或|| 一个为真即为真

且&& 都为真即为真

非! 真为假假为真

逻辑执行流程控制

Sequence逻辑线划分,1finish接2

Do N开始的索引为1

Do Once Multi Input 多个逻辑输入选最快那个,reset可重新执行

变量的细节

变量的可编辑实例=变量右边的眼睛(在一个对象中需要用另一个对象的变量需要选择其变量类型后再选中其可编辑实例才能调用成功)

只读蓝图 勾上则在运行时不能设置

在生成时显示 (可以在生成时显示出来——如从该类中生成ACTOR,则会多一个该变量的下标)

私有 勾上的话衍生蓝图中该变量则不能被修改

复制和复制条件是网络中的

函数

函数的细节

访问修饰符

公共 只要持有当前模板实例都可以访问(子类也可以)

受保护 当前模板实例无法访问到,但子类可以访问

私有 都无法访问

局部变量

只能在函数里面用,是作用于函数的变量,函数调用时变量被创建,函数调用结束,变量生命终止

函数和事件

函数禁止使用delay,事件可以

函数可以有返回值,事件没有

函数有局部变量,事件没有

事件可以被标记为网络同步,函数不行

事件可以被绑定到调度器上,函数不行

宏是文本直接替换,宏可以多个逻辑针脚输入,多个逻辑针脚输出

宏的本地布尔值一开始进去为false

函数中调用宏,本地数据变为局部变量,事件中调用宏,本地数据变为成员变量

宏的作用:可以多个逻辑针脚输入和输出,可以减少变量标记的数量

函数和宏的区别

两者都用封装重复使用

宏是逻辑节点替换,函数不是

宏支持多逻辑针脚输入和输出,函数不行

宏不会成为编译单元,函数会

过多使用宏会导致节点膨胀,函数不会 函数理解为一个节点

宏无法重写,函数可以重写(宏是无形的,函数是有形的)

函数与宏均可以构建无输入输出针脚的节点,但如此做函数本质是纯函数,宏是替换操作

类内部的宏无法在外部通过成员对象调用,函数可以

不建议使用宏写复杂逻辑,而是进行灵活的分支流程控制

结构体

记录比较小的数据  bulf之类   降低数据复制开销

已经遇到的结构体    变换 向量 旋转 颜色

make结构体

break结构体



容器

虚幻中的都是同质容器


Array容器(数组)可以自动变化大小的容器


Map容器(映射)具有键值的同质容器(键值可以是枚举)对于元素操作需要依靠键值,键值是map的操作标签。键值类型可以是蓝图常规对象类型
元素类型必须相同,键值唯一。也就是加入相同键值元素将被覆盖
应用:背包栏(具备格子概念)技能栏(技能施放快捷键)装备槽等


Set容器(集)键值类同质容器。键值和元素相同,本身对键值操作隐藏。操作标签即为元素本身,即如果想要操作set中的内容,需要先知道元素。这与其他两种容器思考方式完全不同 只检查元素存不存在
应用:聊天辱骂过滤,创建名字敏感词检索,特殊道具持有检查等


Array数组


Length获取数组里有多少个元素(对应到索引需减一)
Get复制不改变数组中的元素 更安全
Get引用改变原数据
Add 加在最后的位置
Insert 插入到数组的某个索引位置
Add使唯一 数据不会重复(重复加不进
Append 把下面的加进上的,索引顺序不变,会重复
Clear整个数组清除
Reset格子里内容没掉,还有格子
Reverse反向按索引输出
MakeArray在运行时态动态构建数组
Contains检查是否有某个元素
Find查找该元素的索引,没有返回-1
Remove Index按索引移除元素,剩下往上排
Remove按名字移除元素
Resize指定大小填充 索引数加一 小了删元素 多了加0填充
Set Array Elem将item里的项目插入到索引为index的array里,size to fit若为true,当插入元素的索引位置大于数组大小时,数组将展开(空白处加0填充)为fale则插入失败
Shuffle随机化元素位置
Swap调换两个索引处的元素

UE4框架

GameMode 游戏模式

gamemodebase和gamemode区别在后者更适用于网络游戏,用gamemodebase就用gamestatebase

构建和实现游戏的规则,并将游戏中的其他角色进行注册(只在服务器存在一份)

管理游戏规则

GameState 游戏状态

游戏中共享信息的记录(存在于服务器和所有客户端上,可以自由地复制来保持同步)

共有数据

DefaulePawn 玩家

游戏启动时会将DefaulePawn对齐到Playerstart,默认可以接收按键

默认玩家(只有继承在Pawn的对象才能成为默认玩家)

默认玩家需要通过控制器进行控制

操控的上帝角色,玩家操控角色的数据,进行动作

PlayerConroller 玩家控制器

Pawn和控制他的人类玩家间的接口,本质上代表了人类的意愿(相机,瞄准等)

将真实玩家的意愿进行收集,最后汇总转投给虚拟角色

例如按W事件,PlayerController将按W事件传递给Pawn去做动作

纽带,交互桥梁

PlayerState 玩家状态

游戏中一个参与者的状态,比如人类玩家或模拟人类玩家的机器人,AI没有PlayerState

记录玩家的数据(名字,得分等)

Hud 用户界面

平头显示器——二维的屏幕显示信息——UI

HUD没有控件的概念,UMG里面可以通过控件进行交互

HUD绘制简单UI,UMG为用户界面开发主要手段

用户控件

控件需要调用,在HUD里需要调用控件,显示到视口才能用

百分比需要水平框才能正常流动

获取视口大小的数值与获取鼠标位置的数值不同,

获取视口大小的数值与玩家控制器中的获取鼠标位置数值相同

猜你喜欢

转载自blog.csdn.net/hoppingg/article/details/125520035