赞
踩
1.首先先绑定输入,按v进行视角的切换。
2.创建一个枚举存放视角状态(第一人称,第三人称)
3.在小白人中创建一个枚举类型的变量,进行蓝图间的通信,调用枚举中的值。
4.实现:当处于第一人称视角时,按v切换视角,获得第三人称摄像机的控制权,隐藏第一人称的模型,改变枚举变量的值为第三人称。
具体蓝图
Switch on ViewType:选择性执行,执行值相等的引脚。
Current View Type:枚举型变量,对枚举进行引用。
Deactivate:使其失效(让相机失效)
Activate:使其生效(让相机生效)
Set Owner No See:使其看不见。
5.可以将上述操作变成函数,方便调用,提高复用性。同时初始化状态。
PlayState:角色状态
Health:生命值
Hunger:饱腹度
spirit:体力
Thirst:耐渴度
Initialize Properties:是塌陷成节点,里面的内容
Get World Delta Seconds: 消除帧率的影响
Clamp : 让值在Min 和Max 之间
Set Float(by ref): 传入引用,通过引用修改值
Gate:流程控制,当open时执行,close时不执行
整体效果
UI布局
在GaneInstance中实现UI的显示,在GameInstance中实现是因为,该UI只显示在自己的界面上
Create Widget:创建UI(Class:创建那个UI)
Add to Viewport:将UI加入到窗口中
Set(将UI设置为变量,方便以后使用)
在GameMode中调用UI
Cast to SurrvivalGameInstance:类型转换,不同蓝图之间的通信。UI
关联UI和数据
通过bind进行绑定
具体实现
进度条改变颜色,首先先bind
通过HSV实现颜色的逐渐改变
Map porgress Bar Color,HSV to RGB(H为120时为绿色,为0时为红色)
SecondsPerDay(游戏中一天有多少秒),CurrentDay:当前是第几天,CurrentHour:当前是第几小时,CurrentMinute:当前是第几分钟
4.2 具体实现,创建一个GlobalTimer的蓝图类
Get Game Time in Seconds:获取游戏中的时间,以秒为单位,会受暂停等因素的影响
Division(whole and remainder): 除法运算,返回整数部分,同时也可以获取余数
Append: 字符串的添加
4.3 创建UI(在Runtime中添加)
在GameMode中创建一个GolbaTimer变量,作为引用,方便其他蓝图使用
GameMode获取到Globaltimer,将获取到的实例赋值给GolbalTimer变量
Get All Actor Of Class:获取场景中某个类的所有实例,得到的是一个数组
GET:获取数组中的值,为0即获取第一个,因为场景中只有一个Globaltimer
在UI_Runtime中关联数据,从GameMode中获取GlobalTimer,同时将其设置为变量,方便其他蓝图引用
绑定数据
具体实现, 通过创建一个GlobalTimer类型的变量获取GolbalTimer的信息,从而实现蓝图之间的通信
Format Text:用于非字符串的拼接
Set Day Time里的类容,小于10时,前面补0,如09:02
ToText:转换成text类型
Select:根据index选择执行流(上图中如果传入的值小于10,执行true,否则执行false)
先改变Light Source,将其变成Movable
将其变成动态光,随时间的变换而变换
GlobalTimer所有蓝图
SetActorRotation:设置Actor的旋转角度
Update Sun Direction:更新太阳的角度
Recapture Sky:重新获取天光
当时间大于6, 小于18时为天黑,当时间等于6时,发出“天亮了”通知,当时间等于18时,发出“天黑了”通知。
GlobalTimer所有变量
IsDayTime:是否为白天,为true则为白天
SunLight:获取场景中的灯光
SkySphere:获取场景中的SkySphere
SkyLight
1.创建一个接口,在接口内实现PickUp
在需要实现接口的蓝图中添加接口
Does Implement Interface:是否实施了接口
这里真正运用接口函数,发送消息,有就实施,没有就不实施
可拾取的物品,实施接口中的Pick UP后被销毁
DestoryActor:销毁Actor
拾取面板 效果图
拾取面板UI布局
拾取物品的信息将显示到itemContainer中,因此将其设置成变量 ,同时将其暴露出去
拾取面板具体实现
Create Widghet:创建UI
Set Icon and Text:添加图片和文字
Add Child:为Item Container添加子物体,既往Item Container中添加数据
ADD:向字典中添加数据,以Item Base为key,以UI-PickableItemSlot为value(物品->UI)
Related Item:将拾取物品赋值给Related Item,而Related Item在PickableItemSlot(UI->物品)
Bind Event to Item UIClicked:绑定UI_PickablePanel中的事件分发器
Inform:监听事件
Pick Up Item:拾取物品,在SurvivalCharacter中
删除UI的的物品信息
FIND:在字典中查找值
Remove Child:删除
Actor-UI 是一个字典
拾取面板中每个物品UI布局
拾取面板中每个物品具体实现
Text Block 0:及拾取物品的文字显示(面包,生肉之类),将其设置成变量,通过传参的方式进行赋值。
SetText(Text):设置文字
Set Brush from Texture:设置图片(通过将image_0设置成变量,通过传参的方式赋值)
ItemUIClicked:事件分发器
Call Item UIClicked:调用事件(Clicked Item UI:将自身传递出去)
字段关联 (将地上的物品与UI相关联)
在PickableItemSlot中设置一个变量
在PickablePanel中设置一个字典
在GameInstance中可视化UI,同时将UI界面设置成变量,方便其他蓝图调用。
在SurvivalCharacter中创建一个变量去调用GameInstance中的拾取面板UI
获取GameInstance,通过Convert to import cast让其没有执行流,同时将其设置成变量
在SurvivalCharacter中创建一个数组,检测到可拾取的物品时,将其加入到数组中
SurvivalCharacter调用拾取UI
Cast To ItemBase:类型转换,只有触碰到可拾取的物品时,才调用拾取UI
ADDUNIQUE:只添加一次,防止重复添加
Show Pickable Panel:通过调用该事件创建UI ,该事件在GameInstance中
Add Item:添加可拾取的物品到拾取面板中,该事件在Pickable Panel中
通过Item Base去获取结构体中的信息,然后给可拾取物品赋值
创建一个结构体存储物品信息
在Item Base中创建一个变量去获取结构体中的信息
在SurvivalCharacter中实现此方法
Survival Player State:获取Player State中的消息,及背包中的数据
Try Add Item:调用Inventort中的Try Add Item事件尝试添加物品
GetClass:获取对象类型
Get Class Defaults:获取默认值
离开拾取范围
Cast To ItemBase:类型转换,离开可拾取物品的范围
REMOVE:删除Pickable Items数组中的值
Remove Item:删除UI中的信息,该事件在Pickable Panel中
LENGTH:数组长度
Hide Pickable Panel:隐藏UI,该事件在Game Instance中
创建结构体(每次拾取物品都会传递一组一样的消息)
在PlayState中创建一个变量获取Inventory中的信息
初始化
Content:字典类型,背包里的物品
Break Struct_ItemSlot:获取结构体中的数据
Get Class Defaults:获取默认值
Return Node:表示添加失败
详细蓝图
详细蓝图
定义一个Struct Item Slot的结构体变量,用于给图标赋值
SetText:设置文本信息;
Set Brush from Texture:设置图标;
Set members in Struct_ItemSlot: 设置结构体变量
? Is Vaild:是否为空(为空才创建UI,不为空则不创建UI)
Is in Viewport:是否已经在场景中了
在函数中要赋值只能通过传入引用赋值,勾选要赋值的Pass-by-reference
通过Set By-Ref Var进行设置
Set Input Mode Game And UI:人物和鼠标都可以移动
Show Mouse Currsor:鼠标是否可见
Remove from Parent:移除UI
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。