UE4知识点记录

您所在的位置:网站首页 ue4知识点 UE4知识点记录

UE4知识点记录

2024-07-17 10:44| 来源: 网络整理| 查看: 265

UE4 GamePlay架构   建议看这里,这里比较详细   https://zhuanlan.zhihu.com/p/22833151

 

 

UPROPERTY参数

EditAnywhere    表示该属性可从编辑器内的属性窗口编辑。

Category    定义属性的分类。使用方法: Category=CategoryName. (分类=分类名称)

Const       编辑器中不能修改该值

BlueprintReadOnly     在蓝图中只读,不可修该。

BlueprintReadWrite     在蓝图中可读写。

BlueprintCallable           仅能用于Multicast代理。该代理可被蓝图调用。

 

与UPROPERTY对应的还有一个用于修饰函数的宏UFUNCTION,该宏常用于描述如何从蓝图中访问C++的函数。

UFUNCTION参数 

BlueprintCallable     这种类型的函数,只能在C++中实现和重写。可以理解为蓝图“只读”函数。

BlueprintImplementableEvent     只能在蓝图中实现的函数。类似于C++的纯虚函数

BuleprintNativeEvent                  C++可以提供默认实现,蓝图可以重写。

 

 

 

编码规范 类名前缀

UE4的类名必须遵从命名规范,需要在类名前面加上正确的前缀,与之对应的C++文件名则不加前缀。否则会编译报错。

派生自 Actor 的类前缀为 A,如 AController。 派生自 UObject 的类前缀为 U,如 UComponent。 枚举 的前缀为 E,如 EFortificationType。 接口 类的前缀通常为 I,如 IAbilitySystemInterface。 模板 类的前缀为 T,如 TArray。 派生自 SWidget(Slate UI)的类前缀为 S,如 SButton。 其余类的前缀均为 字母 F ,如 FVector。 其他类型命名

bool类型变量需要加上b前缀,如 bCallable。

 

相关函数简介

事件:

Event Level Reset 关卡重启

Event Actor Begin OverLap   两个Acotor开始碰撞

Event Actor End  OverLap  两个Actor停止碰撞

Event Hit   两个Actor碰撞

Event Any Damage    Actor收到伤害

Event Point Damage   点伤害

Event  Radial Damage  放射伤害

Event Actor Begin Cursor Over  鼠标光标在Actor上悬停

Event Actor End  Cursor Over  鼠标光标在Actor上移开

Event BeginPlay  游戏开始将触发的事件

Event EndPlay    Actor不存在世界场景里面执行此事件

Event Destroyed    Actor被销毁执行此事件

Event Tick    游戏进入每一帧调用此事件

Event  Receive Draw HUD    蓝图绘制到UI

CustomEvent  自定义事件

 

ACTOR自带的事件

OnComponent Hit  

OnComponent begin Overlap

OnComponent End Overlap

OnComponent Wake

OnComponent Sleep

OnBegin Cursor Over

OnEnd  Cursor Over

On Clicked

On Released

On Input Touch Begin

On Input Touch End

On Input Touch Enter

On Input Touch Leave

Physics Volume Changed

On Component Activated

On Component Deactivated

 

材质操作

GetMaterial  获取材质

SetMaterial  设置材质

GetScalarParameterValue  获取材质的值

SetScalarParameterValue  设置材质的值

GetVectorParameterValue  获取材质的值

SetVectorParameterValue  设置材质的值

 

其中蓝图里面的Array就是c++ 里面的TArray,相当于std::vector,可变长度数组,

那么具有的方法也大致类同

SetArrayElem 设置数组里面对应下标的值

Get   获取数据的对应下标的 值,或者引用

Add  添加一个数据到数组的最后面

Add Unique 添加一个唯一的值,如果数组里面有,就不会添加

Remove Index  根据下标删除数组元素

Remove  (reference) 删除数组对应的元素

MakeArray 创建一个数组

Clear 清除数组所有的元素

 

对Actor的操作函数

GetActorLocation   返回Actor位置

GetActorTransform  获取Actor Transform信息

SetVisibility 设置可见性

SetLightColor  设置灯的颜色

Add Actor Local Offset  给Actor设置一个偏移

Activate  启用动画

Set World Scale 3D  设置缩放大小

Get World Scale 3D  得到Actor的缩放

 Get ActorRotation  获得Actor的旋转

 AddActorLocalOffset 给Actor添加一个局部位置偏移

AddActorLocalRotation  给Actor添加一个局部旋转

AddActorLocaltransform  给Actor添加一个Transform偏移

AddActorWorldOffset  给Actor添加一个世界坐标偏移

AddActorWorldRotation 给Actor添加一个世界坐标下的旋转

AddActorWorldTransform  给Actor添加一个世界坐标下的Transoform

SetActorHiddenInGame   设置Actor隐藏

SetVisibility    设置Actor隐藏显示  ,一般用这个

 GetOwningPawn   直接获取控制的pawn

DrawText  在hud里面直接绘制文字

 

其中PlayerControler的方法有,(通过GetPlayerControler获取)

Add Yaw Input 

Add Pitch Input

Add Roll Input

 

整个游戏的函数

Get GameTime Sine Creation  获取Actor的运行的时间

Get GameTime in Seconds   游戏的时间

Get WorldDelta Seconds   获取游戏帧差时间

 

 

 流程控制

Branch  就是if   else

DoN   前面的N次通过,后面不通过 

DoOnce  只通过一次

FlipFlop   第一次通过A,第二次通过B,第三次又是A   这样来回切换

ForLoop   就是for循环

ForLoopWithBreak   就是for循环 带break

Gate  可以设置通过和不通过,和if差不多

MultiGate  可以通过多个

Sequence  顺序执行N个

WhileLoop  就是while循环

 select  从多个里面选一个

Delay   等待延迟执行

MapRangeClamped  数值映射

MapRangeUnClamped  数值映射

 

其他操作

Get Actor of Class 获取场景里面的这个类型的Actor,第一个actor

Get All Actors of Class 获取场景里面所有的Actors,所有的这种类型的

SetMembers In Struct 节点修改可用成员

PrintString 打印消息

MakeTransform  可以合成位置,旋转

Add Reroute Node  增加一个控制点,改变线路

GetPlayerControler   获得控制者

GetPlayerPawn   获得pawn

Enable Input   使得Actor获得输入的能力

MakeArray  组成数组

Random Integer In Range  随机一个整形值

SpawnActor  创建一个Actor

Create Widget 创建一个HUD 节点

Add to Viewport  将HUD添加到视口

 PlaySound At Location  播放声音

GetAllActorofClass  获得场景里面所有的是这个class的Actor

GetAllActorofClass WithTag  获得场景里面所有的有tag 的class Actor

 Cast To  转换成那个Class  相当于c++ 的static_cast

 ShowMouseCursor   显示鼠标

Is Input Key Down  按键是否按下 状态查询

GetMousePosition On ViewPort  获取屏幕空间鼠标位置

Left Mouse Down  鼠标左键按下

Get DisplayName  获取Actor的名字字符串

Get ViewPort Scale  获取ViewPort缩放

SetMaterial   设置材质

Get All ActorWith Tag  获取所有的带有tag的Actors

 SetInputUIOnly   设置输入方式只有UI

 SetInputModeGameOnly  设置输入方式只有游戏

SetGamePause  暂停游戏

QuitGame 退出游戏

SetTimerByFunctionName  设置定时器

ClearTimerByFunctionName 清除定时器

 Actor Has Tag   检查Actor是否有tag标签

IsKeyDown   检查某个键是否按下

Set View Target With Blend   平滑切换两个Actor相机

Possess  切换两个pawn 的控制权

 

 

打断点调试  F9   或右键  Add BreakPoint

变量上右键Watch this Value 查看调试的运行值

注释是 右键 选择  Node Comment 填写注释内容,  或者按键C

 add math Expression  添加数学小函数  如:a+b+c*d

 

 

时间轴的函数

Get GameTimeInSeconds  获取游戏时间

Get World Delta Seconds  获取游戏delta时间

Ease 缓动函数

GetPlayRate  获得播放速率

Get Playback Position 获取播放位置

Get TimeLine Length 获取时间轴长度

Is Looping 是否循环

Is Playing  是否在播放

is Reversing 是否在反向播放

Play  播放

Play from Start  从开始处播放

Reverse  反向播放

Reverse from End 从结尾处开始反向播放

Set Looping 设置循环

Set New Time 设置新时间

Set PlayRate 设置播放速率

Set Playback Position  设置播放位置

Set TimeLine Length 设置时间轴长度

Set TimeLine Length Mode 设置时间轴长度模式

Stop 停止

 

其中的蓝图里面的Event 就是c++的类函数

Event Dispatcher就是c++ 的回调函数数组,这样就可以bind  unbind,call,clear,相当于QT的Slot

 

Event Tick的 Delta Seconds 和Get World Delta Seconds 值一样



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3