『功能项目』主角的信息显示【16】

本章项目成果展示

我们打开上一篇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站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)https://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6

相关推荐
R-G-B1 小时前
【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件
开发语言·c#·c# 多个 .cs文件项目
懒人Ethan16 小时前
解决一个C# 在Framework 4.5反序列化的问题
java·前端·c#
mysolisoft18 小时前
Avalonia+ReactiveUI实现记录自动更新
c#·avalonia·reactiveui·sourcegenerator
心疼你的一切19 小时前
使用Unity引擎开发Rokid主机应用的模型交互操作
游戏·ui·unity·c#·游戏引擎·交互
韩立学长19 小时前
【开题答辩实录分享】以《C#大型超市商品上架调配管理系统的设计与实现》为例进行答辩实录分享
开发语言·c#
玩泥巴的21 小时前
.NET驾驭Word之力:数据驱动文档 - 邮件合并与自定义数据填充完全指南
c#·word·.net·com互操作
心疼你的一切1 天前
使用Unity引擎开发Rokid主机应用的全面配置交互操作
学习·游戏·unity·c#·游戏引擎·交互
椒颜皮皮虾྅1 天前
【DeploySharp 】基于DeploySharp 的深度学习模型部署测试平台:安装和使用流程
人工智能·深度学习·开源·c#·openvino
kalvin_y_liu2 天前
【MES架构师与C#高级工程师(设备控制方向)两大职业路径的技术】
开发语言·职场和发展·c#·mes
椒颜皮皮虾2 天前
基于DeploySharp 的深度学习模型部署测试平台:支持YOLO全系列模型
c#