GQ_Communicate/GQ_TongXin/Assets/script/报警/AlarmUI.cs

135 lines
4.2 KiB
C#

using System;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class AlarmUI : MonoBehaviour, IPointerClickHandler
{
public AlarmApparatus alarmApparatus;
public TextMeshProUGUI textMeshPro;
public Image expand_image;
public Button close_bt;
public GameObject preform;
public RectTransform Content;
public Sprite Alarm1;
public Sprite Alarm2;
public Sprite Alarm3;
public Image Alarm_img;
public TextMeshProUGUI Alarm_type;
public TextMeshProUGUI Alarm_name;
public TextMeshProUGUI Alarm_time;
public Canvas canvas;
public void OnPointerClick(PointerEventData eventData)
{
GameObject go;
if (canvas.transform.childCount == 0)
{
go = Instantiate(expand_image.gameObject);
go.transform.SetParent(canvas.transform);
close_bt = canvas.transform.GetChild(0).Find("关闭").GetComponent<Button>();
close_bt.onClick.AddListener(() =>
{
canvas.transform.GetChild(0).gameObject.SetActive(false);
});
}
else
{
go = canvas.transform.GetChild(0).gameObject;
}
var worldPosition = expand_image.transform.position;
// 获取Canvas上的RectTransform组件
RectTransform canvasRectTransform = canvas.GetComponent<RectTransform>();
// 世界坐标转屏幕坐标
Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPosition);
// 屏幕坐标转Overlay坐标
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, screenPos, canvas.worldCamera, out Vector2 overlayPos);
// go.GetComponent<RectTransform>().position = new Vector3(overlayPos.x, overlayPos.y, 0);
go.GetComponent<RectTransform>().localPosition = new Vector3(overlayPos.x, overlayPos.y, 0);
go.GetComponent<RectTransform>().localScale = Vector3.one;
go.SetActive(true);
}
void OnEnable()
{
try
{
for (int i = 0; i < int.Parse(textMeshPro.text); i++)
{
if (alarmApparatus.alarmQueries != null && alarmApparatus.alarmQueries[i] != null && alarmApparatus.alarmQueries[i].tmsAlarmLists != null)
continue;
foreach (var item in alarmApparatus.alarmQueries[i].tmsAlarmLists)
{
Alarm_type.text = item.alarmReason;
var d = Array.Find(GameObject.FindObjectsOfType<DeviceQuery>(), x =>
{
return (x.deviceList.id == item.alarmDeviceId);
});
Alarm_name.text = d.deviceList.deviceName;
Alarm_time.text = item.alarmDate;
switch (item.alarmLevel)
{
case "1":
Alarm_img.sprite = Alarm1;
break;
case "2":
Alarm_img.sprite = Alarm2;
break;
case "3":
Alarm_img.sprite = Alarm3;
break;
default:
break;
}
Alarm_img.SetNativeSize();
GameObject go = Instantiate(preform);
go.transform.SetParent(Content.transform);
go.GetComponent<Button>().onClick.AddListener(() =>
{
//设备闪烁
});
}
}
Content.sizeDelta = new Vector2(0, Content.GetComponent<GridLayoutGroup>().cellSize.y * int.Parse(textMeshPro.text));
}
catch (Exception e)
{
Debug.Log(e.StackTrace + "\n" + e.Message);
}
}
void Start()
{
}
void Update()
{
//if (Input.GetMouseButton(1) && ExtendedFlycam.Inst.HasMouseMoved())
//{
// try
// {
// canvas.transform.GetChild(0).gameObject.SetActive(false);
// }
// catch (Exception)
// {
// }
//}
}
}