740 lines
18 KiB
C#
740 lines
18 KiB
C#
using DG.Tweening;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class ZZUIManager : MonoBehaviour
|
|
{
|
|
[Header("面板")]
|
|
/// <summary>
|
|
/// 点击可以弹出右边框
|
|
/// </summary>
|
|
public GameObject Right_Box;
|
|
/// <summary>
|
|
/// 总指挥框
|
|
/// </summary>
|
|
public GameObject Warn_Tip;
|
|
/// <summary>
|
|
/// 学生疏散情况
|
|
/// </summary>
|
|
public GameObject Right_Situation;
|
|
/// <summary>
|
|
/// 撤离方案选择框
|
|
/// </summary>
|
|
public GameObject DiaLogBox;
|
|
/// <summary>
|
|
/// 下楼梯队形选着
|
|
/// </summary>
|
|
public GameObject DiaLogBox2;
|
|
/// <summary>
|
|
/// 已经安全撤离框
|
|
/// </summary>
|
|
public GameObject Right_Message;
|
|
/// <summary>
|
|
/// 为能安全撤离的框
|
|
/// </summary>
|
|
public GameObject Right_Message2;
|
|
/// <summary>
|
|
/// 下拉框
|
|
/// </summary>
|
|
public Dropdown dropdwn;
|
|
/// <summary>
|
|
/// 撤离方案选择
|
|
/// </summary>
|
|
public ToggleGroup Tip123;
|
|
/// <summary>
|
|
/// 地图上的四个点
|
|
/// </summary>
|
|
public GameObject MapTapPanel;
|
|
/// <summary>
|
|
/// 疏散提示
|
|
/// </summary>
|
|
public GameObject Command02;
|
|
//右边框框创建紧急任务
|
|
//创建的父对象
|
|
public GameObject content;
|
|
//创建的东西
|
|
public GameObject TextPrefab;
|
|
|
|
//疏散情况
|
|
//创建的任务
|
|
public GameObject content2;
|
|
//创建的东西
|
|
public GameObject TextPrefab2;
|
|
|
|
/// <summary>
|
|
/// 三个楼梯
|
|
/// </summary>
|
|
[Header("按钮")]
|
|
public Button Icn_Stairway_1;
|
|
public Button Icn_Stairway_2;
|
|
public Button Icn_Stairway_3;
|
|
/// <summary>
|
|
/// 疏散顺序
|
|
/// </summary>
|
|
public Button Warn;
|
|
/// <summary>
|
|
/// 呼出队形机
|
|
/// </summary>
|
|
public Button Flee;
|
|
/// <summary>
|
|
/// 死亡图标的一号电梯
|
|
/// </summary>
|
|
public Button Die;
|
|
/// <summary>
|
|
/// 电梯图标的二号电梯
|
|
/// </summary>
|
|
public Button Phone;
|
|
/// <summary>
|
|
/// 地图F4
|
|
/// </summary>
|
|
public Button TP_1;
|
|
public Button TP_2;
|
|
public Button TP_3;
|
|
public Button TP_4;
|
|
/// <summary>
|
|
/// 对讲机
|
|
/// </summary>
|
|
public Button Intercom;
|
|
/// <summary>
|
|
/// 左边的物品栏
|
|
/// </summary>
|
|
public Button Prop1;
|
|
public Button Prop2;
|
|
public Button Prop3;
|
|
/// <summary>
|
|
/// 右边物品栏
|
|
/// </summary>
|
|
public Button Prop4;
|
|
public Button Prop5;
|
|
public Button Prop6;
|
|
/// <summary>
|
|
/// 撤离教室方案ABC
|
|
/// </summary>
|
|
public Toggle DialogboxA;
|
|
public Toggle DialogboxB;
|
|
public Toggle DialogboxC;
|
|
/// <summary>
|
|
/// 撤离方案确定
|
|
/// </summary>
|
|
public Button DialogboxSure;
|
|
/// <summary>
|
|
/// 梯队队形选择AB
|
|
/// </summary>
|
|
public Button Dialogbox2A;
|
|
public Button Dialogbox2B;
|
|
/// <summary>
|
|
/// 梯队选择确定
|
|
/// </summary>
|
|
public Button Dialogbox2Sure;
|
|
/// <summary>
|
|
/// 加减号
|
|
/// </summary>
|
|
public Button Minus;
|
|
public Button Plus;
|
|
/// <summary>
|
|
/// 上报按钮
|
|
/// </summary>
|
|
public Button Sumbit;
|
|
public Button Sumbit2;
|
|
/// <summary>
|
|
/// 确定起火点按钮
|
|
/// </summary>
|
|
public Button FireButton;
|
|
/// <summary>
|
|
/// 右边的框
|
|
/// </summary>
|
|
public Button Right_BoxButton;
|
|
//两个叉叉
|
|
public Button Close1;
|
|
public Button Close2;
|
|
|
|
|
|
[Header("文本")]
|
|
/// <summary>
|
|
/// 右边框框紧急任务
|
|
/// </summary>
|
|
public Text Tip_1;
|
|
public Text Tip_2;
|
|
public Text Tip_3;
|
|
public Text Tip_4;
|
|
/// <summary>
|
|
/// 现场总指挥
|
|
/// </summary>
|
|
public Text Head_Text;
|
|
/// <summary>
|
|
/// 总指挥介绍
|
|
/// </summary>
|
|
public Text WarnTip_Text;
|
|
/// <summary>
|
|
/// 疏散情况文本
|
|
/// </summary>
|
|
public Text Situation_Tip_1;
|
|
public Text Situation_Tip_2;
|
|
public Text Situation_Tip_3;
|
|
public Text Situation_Tip_4;
|
|
/// <summary>
|
|
/// 撤离方案ABC
|
|
/// </summary>
|
|
public Text LeftText1;
|
|
public Text LeftText2;
|
|
public Text LeftText3;
|
|
/// <summary>
|
|
/// 撤离方案介绍
|
|
/// </summary>
|
|
public Text RightText1;
|
|
public Text RightText2;
|
|
public Text RightText3;
|
|
/// <summary>
|
|
/// 楼梯梯队介绍
|
|
/// </summary>
|
|
public Text LeftLT_Text1;
|
|
public Text RightLT_Text1;
|
|
/// <summary>
|
|
/// 梯队介绍
|
|
/// </summary>
|
|
public Text LeftLT_Text2;
|
|
public Text RightLT_Text;
|
|
/// <summary>
|
|
/// 撤离班级
|
|
/// </summary>
|
|
public Text Right_MessageText;
|
|
/// <summary>
|
|
/// 学生人数
|
|
/// </summary>
|
|
public InputField Student_Number;
|
|
/// <summary>
|
|
/// 未撤离班级
|
|
/// </summary>
|
|
public Text NO_Left_MessageText;
|
|
public Text NO_Right_MessageText;
|
|
/// <summary>
|
|
/// 未撤离学生人数
|
|
/// </summary>
|
|
public Text NO_Student;
|
|
/// <summary>
|
|
/// 时间文本
|
|
/// </summary>
|
|
public Text TimeText;
|
|
/// <summary>
|
|
/// 道具数量左->右
|
|
/// </summary>
|
|
public Text PropText1;
|
|
public Text PropText2;
|
|
public Text PropText3;
|
|
public Text PropText4;
|
|
public Text PropText5;
|
|
public Text PropText6;
|
|
/// <summary>
|
|
/// 网络延迟
|
|
/// </summary>
|
|
public Text WLYC;
|
|
/// <summary>
|
|
/// 标题文本
|
|
/// </summary>
|
|
public Text TileText;
|
|
//起火点按钮文本
|
|
public Text FireText;
|
|
|
|
//计时器
|
|
private float timeElapsed = 0f;
|
|
//记录
|
|
int num = 0;
|
|
public Image bg;
|
|
|
|
public float moveDuration = 0.5f; // 动画持续时间
|
|
public RectTransform buttonRect; // 你的按钮 RectTransform
|
|
public bool isHidden=true;
|
|
public float showPositionX;
|
|
public float hidePositionX;
|
|
|
|
public ZZUIManager instert;
|
|
public void Awake()
|
|
{
|
|
isHidden = true;
|
|
instert = this;
|
|
TimeText.text = "00.00";
|
|
num = 0;
|
|
}
|
|
private void Start()
|
|
{
|
|
|
|
hidePositionX = 337f;
|
|
showPositionX = 1.159973f;
|
|
//右边框框弹出来
|
|
Right_BoxButton.onClick.AddListener(() =>
|
|
{
|
|
OnClickHideButton();
|
|
});
|
|
|
|
#region 道具
|
|
Prop1.onClick.AddListener(() =>
|
|
{
|
|
Prop(1);
|
|
});
|
|
Prop2.onClick.AddListener(() =>
|
|
{
|
|
Prop(2);
|
|
});
|
|
Prop3.onClick.AddListener(() =>
|
|
{
|
|
Prop(3);
|
|
});
|
|
Prop4.onClick.AddListener(() =>
|
|
{
|
|
Prop(4);
|
|
});
|
|
Prop5.onClick.AddListener(() =>
|
|
{
|
|
Prop(5);
|
|
});
|
|
Prop6.onClick.AddListener(() =>
|
|
{
|
|
Prop(6);
|
|
});
|
|
#endregion
|
|
|
|
#region 地标点击事件(地图那四个点)
|
|
TP_1.onClick.AddListener(() =>
|
|
{
|
|
MapTP(1);
|
|
});
|
|
TP_2.onClick.AddListener(() =>
|
|
{
|
|
MapTP(2);
|
|
});
|
|
TP_3.onClick.AddListener(() =>
|
|
{
|
|
MapTP(3);
|
|
});
|
|
TP_4.onClick.AddListener(() =>
|
|
{
|
|
MapTP(4);
|
|
});
|
|
#endregion
|
|
//关闭总指挥框
|
|
if (Warn_Tip.activeSelf&&(Input.GetMouseButtonDown(0)|| Input.GetMouseButtonDown(1)|| Input.GetMouseButtonDown(2)))
|
|
{
|
|
Warn_Tip.SetActive(false);
|
|
}
|
|
|
|
Minus.onClick.AddListener(() =>
|
|
{
|
|
int currentValue = int.Parse(Student_Number.text);
|
|
// 增加1
|
|
currentValue--;
|
|
// 更新 InputField 的文本
|
|
Student_Number.text = currentValue.ToString();
|
|
});
|
|
Plus.onClick.AddListener(() =>
|
|
{
|
|
int currentValue = int.Parse(Student_Number.text);
|
|
// 增加1
|
|
currentValue++;
|
|
// 更新 InputField 的文本
|
|
Student_Number.text = currentValue.ToString();
|
|
});
|
|
|
|
//打开队形
|
|
Flee.onClick.AddListener(() => {
|
|
DiaLogBox2.SetActive(true);
|
|
});
|
|
|
|
Close1.onClick.AddListener(() => { Close(); });
|
|
Close2.onClick.AddListener(() => { Close(); });
|
|
|
|
//下拉列表(人物选着)
|
|
dropdwn.onValueChanged.AddListener(delegate {
|
|
DropdownValueChanged(dropdwn);
|
|
});
|
|
//默认开一次这样开局就能默认第一个选项一次
|
|
DropdownValueChanged(dropdwn);
|
|
|
|
//右边框框 上报总指 (已经安全撤离的)
|
|
Sumbit.onClick.AddListener(() =>
|
|
{
|
|
SumbitButton();
|
|
});
|
|
|
|
//右边框框 上报总指 (未安全撤离的)
|
|
Sumbit2.onClick.AddListener(() =>
|
|
{
|
|
Sumbit2Button();
|
|
});
|
|
//撤离方案选择
|
|
DialogboxA.onValueChanged.AddListener(delegate { OnToggleChanged(DialogboxA); });
|
|
DialogboxB.onValueChanged.AddListener(delegate { OnToggleChanged(DialogboxB); });
|
|
DialogboxC.onValueChanged.AddListener(delegate { OnToggleChanged(DialogboxC); });
|
|
//撤离方案确定
|
|
DialogboxSure.onClick.AddListener(() =>
|
|
{
|
|
DiaLogBox.SetActive(false);
|
|
});
|
|
//梯队选择队形
|
|
Dialogbox2A.onClick.AddListener(() =>
|
|
{
|
|
num = 1;
|
|
});
|
|
Dialogbox2B.onClick.AddListener(() =>
|
|
{
|
|
num = 2;
|
|
});
|
|
//梯队队形确定
|
|
Dialogbox2Sure.onClick.AddListener(() =>
|
|
{
|
|
if(num==1)
|
|
{
|
|
|
|
|
|
|
|
num = 0;
|
|
DiaLogBox2.SetActive(false);
|
|
}
|
|
if(num==2)
|
|
{
|
|
|
|
|
|
num = 0;
|
|
DiaLogBox2.SetActive(false);
|
|
}
|
|
});
|
|
FireButton.onClick.AddListener(() => {
|
|
|
|
FireText.color = new Color(0.75f, 0.75f, 0.75f);
|
|
});
|
|
|
|
|
|
}
|
|
private void Update()
|
|
{
|
|
// 更新时间
|
|
timeElapsed += Time.deltaTime;
|
|
|
|
// 计算分钟和秒数
|
|
int minutes = Mathf.FloorToInt(timeElapsed / 60);
|
|
int seconds = Mathf.FloorToInt(timeElapsed % 60);
|
|
|
|
// 格式化时间为 "00.00" 格式
|
|
TimeText.text = string.Format("{0:00}.{1:00}", minutes, seconds);
|
|
}
|
|
//动画部分
|
|
public void OnClickHideButton()
|
|
{
|
|
// 如果按钮已隐藏,点击后显示
|
|
if (isHidden)
|
|
{
|
|
// 恢复按钮到原位置
|
|
buttonRect.DOAnchorPosX(showPositionX, moveDuration).SetEase(Ease.InOutCubic);
|
|
bg.transform.Rotate(0, 0,180f);
|
|
isHidden = false; // 更新状态为未隐藏
|
|
}
|
|
else
|
|
{
|
|
// 隐藏按钮
|
|
buttonRect.DOAnchorPosX(hidePositionX, moveDuration).SetEase(Ease.InOutCubic);
|
|
bg.transform.Rotate(0, 0,180f);
|
|
isHidden = true; // 更新状态为隐藏
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 道具需要执行的
|
|
/// </summary>
|
|
/// <param name="a">从左->右</param>
|
|
public void Prop(int a)
|
|
{
|
|
switch (a)
|
|
{
|
|
case 1:
|
|
break;
|
|
case 2:
|
|
break;
|
|
case 3:
|
|
break;
|
|
case 4:
|
|
break;
|
|
case 5:
|
|
break;
|
|
case 6:
|
|
break;
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 地图地点
|
|
/// </summary>
|
|
/// <param name="a">1-操场 2-教室 3-厨房 4-楼道</param>
|
|
public void MapTP(int a)
|
|
{
|
|
switch(a)
|
|
{
|
|
case 1:
|
|
|
|
FireText.color = new Color(1f, 1f, 1f);
|
|
TileText.text = "请选择无法用于疏散的楼道";
|
|
break;
|
|
case 2:
|
|
|
|
FireText.color = new Color(1f, 1f, 1f);
|
|
TileText.text = "请选择无法用于疏散的楼道";
|
|
break;
|
|
case 3:
|
|
|
|
FireText.color = new Color(1f, 1f, 1f);
|
|
TileText.text = "请选择无法用于疏散的楼道";
|
|
break;
|
|
case 4:
|
|
|
|
FireText.color = new Color(1f, 1f, 1f);
|
|
TileText.text = "请选择无法用于疏散的楼道";
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 下拉列表执行的事件
|
|
/// </summary>
|
|
/// <param name="change"></param>
|
|
void DropdownValueChanged(Dropdown change)
|
|
{
|
|
int index = change.value;
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
// 执行 Option 1 相关的事件
|
|
Debug.Log("Option 1 selected");
|
|
break;
|
|
case 1:
|
|
// 执行 Option 2 相关的事件
|
|
Debug.Log("Option 2 selected");
|
|
break;
|
|
case 2:
|
|
// 执行 Option 3 相关的事件
|
|
Debug.Log("Option 3 selected");
|
|
break;
|
|
case 3:
|
|
break;
|
|
case 4:
|
|
break;
|
|
case 5:
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 修改右边框框内容
|
|
/// </summary>
|
|
/// <param name="str">内容</param>
|
|
/// <param name="a">从上到下</param>
|
|
public void FixWarn(string str,int a)
|
|
{
|
|
switch (a)
|
|
{
|
|
case 1:
|
|
break;
|
|
case 2:
|
|
break;
|
|
case 3:
|
|
break;
|
|
case 4:
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 修改网络延迟
|
|
/// </summary>
|
|
/// <param name="str">网络延迟的数字部分</param>
|
|
public void FixDelay(string str)
|
|
{
|
|
WLYC.text = "网络延迟:" + str;
|
|
}
|
|
/// <summary>
|
|
/// 修改疏散班级情况
|
|
/// </summary>
|
|
/// <param name="str">班级撤离情况</param>
|
|
/// <param name="a">更新第几条消息从上往下</param>
|
|
public void FixSituation(string str,int a)
|
|
{
|
|
switch (a)
|
|
{
|
|
case 1:
|
|
Situation_Tip_1.text = str;
|
|
break;
|
|
case 2:
|
|
Situation_Tip_2.text = str;
|
|
break;
|
|
case 3:
|
|
Situation_Tip_3.text = str;
|
|
break;
|
|
case 4:
|
|
Situation_Tip_4.text = str;
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 修改成功撤离班级的信息
|
|
/// </summary>
|
|
/// <param name="str">撤离班级的名字</param>
|
|
/// <param name="a">人数</param>
|
|
public void FixFledOk(string str,int a)
|
|
{
|
|
Right_MessageText.text = str;
|
|
int currentValue = int.Parse(Student_Number.text);
|
|
currentValue = a;
|
|
// 更新 InputField 的文本
|
|
Student_Number.text = currentValue.ToString();
|
|
}
|
|
/// <summary>
|
|
/// 修改未撤离班级
|
|
/// </summary>
|
|
/// <param name="str">未撤离的班级</param>
|
|
/// <param name="a">未撤离的人数</param>
|
|
public void FixNo(string str,int a)
|
|
{
|
|
NO_Left_MessageText.text = str;
|
|
NO_Right_MessageText.text = str;
|
|
NO_Student.text =a.ToString();
|
|
}
|
|
/// <summary>
|
|
/// 修改撤离方案的介绍
|
|
/// </summary>
|
|
/// <param name="str">内容</param>
|
|
/// <param name="a">A=1,B=2,C=3选项</param>
|
|
public void FixFled(string str,int a)
|
|
{
|
|
switch (a)
|
|
{
|
|
case 1:
|
|
RightText1.text = str;
|
|
break;
|
|
case 2:
|
|
RightText2.text = str;
|
|
break;
|
|
case 3:
|
|
RightText3.text = str;
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 撤离方案选择
|
|
/// </summary>
|
|
/// <param name="change">A-1 B-2 C-3</param>
|
|
public void OnToggleChanged(Toggle changedToggle)
|
|
{
|
|
if (changedToggle.isOn)
|
|
{
|
|
if (changedToggle == DialogboxA)
|
|
{
|
|
Debug.Log("Toggle 1 is selected");
|
|
}
|
|
else if (changedToggle == DialogboxB)
|
|
{
|
|
Debug.Log("Toggle 2 is selected");
|
|
}
|
|
else if (changedToggle == DialogboxC)
|
|
{
|
|
Debug.Log("Toggle 3 is selected");
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 已经安全撤离的班级 上报总指 按钮事件
|
|
/// </summary>
|
|
public void SumbitButton()
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// 未安全撤离的班级 上报总指 按钮事件
|
|
/// </summary>
|
|
public void Sumbit2Button()
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// 打开关闭点火界面
|
|
/// </summary>
|
|
public void FirePanel()
|
|
{
|
|
FireText.color = new Color(0.75f, 0.75f, 0.75f);
|
|
if (MapTapPanel.activeSelf)
|
|
{
|
|
MapTapPanel.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
MapTapPanel.SetActive(true);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 疏散提示
|
|
/// </summary>
|
|
public void WarnPanel()
|
|
{
|
|
if(Command02.activeSelf)
|
|
{
|
|
Command02.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
Command02.SetActive(true);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 撤离方案选着
|
|
/// </summary>
|
|
public void DialogboxPanel()
|
|
{
|
|
if(DiaLogBox.activeSelf)
|
|
{
|
|
DiaLogBox.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
DiaLogBox.SetActive(true);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 下楼梯队形选择
|
|
/// </summary>
|
|
public void DialogBoxPanel2Panel()
|
|
{
|
|
if (DiaLogBox2.activeSelf)
|
|
{
|
|
DiaLogBox2.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
DiaLogBox2.SetActive(true);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 创建紧急通告
|
|
/// </summary>
|
|
/// <param name="str">文本内容</param>
|
|
public void CreateWarn(string str)
|
|
{
|
|
GameObject newText = Instantiate(TextPrefab);
|
|
newText.transform.SetParent(content.transform, false);
|
|
Text text=newText.GetComponentInChildren<Text>();
|
|
text.text = str;
|
|
}
|
|
/// <summary>
|
|
/// 创建疏散情况内容
|
|
/// </summary>
|
|
/// <param name="str">文本内容</param>
|
|
public void CreateSituation(string str)
|
|
{
|
|
GameObject newText = Instantiate(TextPrefab2);
|
|
newText.transform.SetParent(content2.transform, false);
|
|
Text text = newText.GetComponentInChildren<Text>();
|
|
text.text = str;
|
|
}
|
|
private void Close()
|
|
{
|
|
DiaLogBox2?.SetActive(false);
|
|
DiaLogBox?.SetActive(false);
|
|
}
|
|
}
|