本章项目成果展示
我们打开上一篇15怪物的信息显示的项目,
本章要做的事情是对主角的UI信息实时显示
创建一个脚本:UIManager.cs
创建一个空物体作为钉子钉在左上角命名为LeftUp
创建Image做为头像
将以下资源导入Art文件夹
将以下资源图片放至Art文件夹
新建一个Slider
将填充Fill改为绿色
隐藏掉Handle
Slider最大值调至1(因为后续代码中有
hpSlider.value = (float)gm.infoSys.playerCurrentHP / gm.infoSys.playerHP;
)
调节宽度
调节填充背景进行向左右两侧扩大一些
创建一个Text
Ctrl + d复制一个Slider
向下拖拽
将填充Fill改为蓝色
对两个Slider重命名
创建脚本:
using UnityEngine;
using UnityEngine.UI;
public class UIManager : MonoBehaviour{
public static UIManager Instance;
public Slider hpSlider;
public Slider mpSlider;
GameManager gm;
void Awake(){
DontDestroyOnLoad(this);
Instance = this;
}
void Start(){
gm = GameManager.Instance;
}
void Update() {
SetHPAndMpSliderValue();
}
public void SetExpSliderValue(int value){
InfoSystem ism = gm.infoSys;
ism.exp += value;
if (ism.exp >= ism.level * 100){
ism.exp -= ism.level * 100;
ism.level++;
//TODO
//生成一个效果
}
}
public void SetHPAndMpSliderValue(){
hpSlider.value = (float)gm.infoSys.playerCurrentHP / gm.infoSys.playerHP;
mpSlider.value = (float)gm.infoSys.playerCurrentMP / gm.infoSys.playerMP;
}
}
将脚本挂载至Canvas身上
运行项目即可实现
战斗中效果:
接下来要做的事情是经验值的变化
首先创建一个空物体做为钉子
设置锚点为最下方
创建一个Slider
设置长度与锚点
填充颜色设置为黄色
新建Text调整大小及位置
重命名为SliderExp
在场景中创建一个Canvas重命名为CurrentCanvas
修改代码将Canvas改为CurrentCanvas
这样做的目的是,Awake()函数下的DontDestroyOnLoad()函数会让该Canvas在运行时进入不可删除区域
此时当前场景找不到Canvas,所以我们创建一个CurrentCanvas来接收从Resources生成的怪物King的UI信息Image
修改UImanager.cs脚本:
using UnityEngine;
using UnityEngine.UI;
public class UIManager : MonoBehaviour{
public static UIManager Instance;
public Slider hpSlider;
public Slider mpSlider;
GameManager gm;
public Slider expSlider;
void Awake(){
DontDestroyOnLoad(this);
Instance = this;
}
void Start(){
gm = GameManager.Instance;
SetExpSliderValue(0);
}
void Update() {
SetHPAndMpSliderValue();
}
public void SetExpSliderValue(int value){
InfoSystem ism = gm.infoSys;
ism.exp += value;
expSlider.value = (float)ism.exp / (ism.level * 100);
}
public void SetHPAndMpSliderValue(){
hpSlider.value = (float)gm.infoSys.playerCurrentHP / gm.infoSys.playerHP;
mpSlider.value = (float)gm.infoSys.playerCurrentMP / gm.infoSys.playerMP;
}
}
挂载经验值SliderExp
运行项目
当将怪物King消灭后 - 显示经验值增加
接下来要做的事情是在主角头像旁增加一个Text组件显示等级信息
Ctrl + d在创建一个Text
重命名为Grade
接下来在脚本中控制经验升满后让等级数值增加
修改脚本:
也许这样我们看不到效果,因为场景中只有一个怪物,一只怪物只增加10经验值,现在我们将消灭怪物后的增加经验调到100
绑定Text组件等级信息Grade
运行项目 - 当消灭怪物后会有等级的提升
现在要优化的是在升级时给主角增加一个升级特效
将外包拖拽一个Buff预制体
重命名为GradeUpEffect
修改UIManager.cs脚本:
保存项目后运行 - 消灭怪物等级提升后会有一个特效在两秒后消除
本篇做了主角的UI信息显示升级的功能,接下来还需做以下内容:
1.怪物死亡特效
2.怪物死亡掉落物品
3.掉落物品拾取后的转移与穿戴
4.异步传送转换场景
5.目标点巡航功能
6.坐骑模型的召唤与取消
7.乘坐坐骑
以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。
具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》