这篇文章进行对游戏ui逻辑的总结。
首先给每个机器人添加一个血条的效果,在机器人的游戏物体下创建一个画布,并添加一个slider,只保留其中的Fill Area,把其他的删掉,如图。
将Fill中的image修改为红色,然后给slider添加一个脚本,主要功能是让slider的value的值与血量占比相当
using UnityEngine;
using UnityEngine.UI;
public class follower : MonoBehaviour
{
[SerializeField]
private float m_offsety;
public Transform m_robot;
private float m_robotinithp;//机器人初始的hp
private void Start()
{
m_robotinithp = m_robot.gameObject.GetComponent<RobotController>().M_hp;
}
private void Update()
{
//确定血条位置
gameObject.transform.position =
new Vector3(m_robot.position.x, m_robot.position.y + m_offsety, m_robot.position.z);
//根据实际情况扣血
gameObject.GetComponent<Slider>().value=
((m_robot.gameObject.GetComponent<RobotController>().M_hp / m_robotinithp));
}
}
然后对该画布的Canvas组件中的Render Mode进行如图设置:
创建一个新的相机,将它拖入Canvas组件中的Render Camera,在第三篇文章中的gamemanager类中拥有该相机游戏对象的引用,名为m_secondcamera,并将其与主相机的transform同步。这样子就相当与每个机器人都拥有一个与血量相当slider,并且它时刻面向玩家的视角,形成血条的效果。
血条设置好以后,创建多个scene来存储关卡,把每个scene的地图自己div一下,将多个机器人放置其中并设置好巡逻点。然后开始进行ui脚本的创建。
首先是第一个scene也就是主菜单,创建一个名为UI的空物体,在它下面创建三个画布,再为每个画布添加各种功能对象,如图:
创建脚本进行管理,挂在ui上
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class menuui : MonoBehaviour {
public GameObject m_setcanvas;
public GameObject m_Authorcanvas;
public GameObject m_volumeslider;
private void Start()
{
m_setcanvas.SetActive(false);
m_Authorcanvas.SetActive(false);
m_volumeslider.GetCompo