123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class DeviceIconCtrl : MonoBehaviour
- {
- private RectTransform rect;
- private Camera _camera;
-
- public DeviceIconData _data;
- private Text valueText;
- private Text nameText;
- public Transform targetTransForm;
-
- public Button _Button;
- public Image iconImg;
- public Sprite shuiWeiIcon;
- public Sprite shenYaJiIcon;
- public Sprite jingLiShuiZhunYiIcon;
- public Sprite wenDuIcon;
- public Sprite yinZhangXianYiIcon;
- public Sprite chuiXianZuoBiaoYiIcon;
- public Sprite tuYaLiJiIcon;
- public Sprite yingLiJiIcon;
- public Sprite sanXiangWeiCuoJiIcon;
- public Sprite erXiangCeFengJiIcon;
- public Sprite weiYiJiIcon;
- private float currentTime = 0.0f;
-
- public void Init(DeviceIconData data)
- {
- _camera = CameraManager.instance.mainCamera;
- _camera.GetComponent<CameraBird>().OnCameraBeginChange += CameraBeginChange;
- _camera.GetComponent<CameraBird>().OnCameraEndChange += CameraEndChange;
- _data = data;
- targetTransForm = data.targetTransform;
-
- rect = this.GetComponent<RectTransform>();
-
- rect.anchoredPosition = new Vector2(2000, 0);
- iconImg = this.transform.Find("Root").Find("bg").GetComponent<Image>();
- switch (_data.type)
- {
- case GongChengType.shuiWei:
- iconImg.sprite = shuiWeiIcon;
- break;
- case GongChengType.shenYaJi:
- iconImg.sprite = shenYaJiIcon;
- break;
- case GongChengType.jingLiShuiZhunYi:
- iconImg.sprite = jingLiShuiZhunYiIcon;
- break;
- case GongChengType.wenDu:
- iconImg.sprite = wenDuIcon;
- break;
- case GongChengType.yinZhangXianYi:
- iconImg.sprite = yinZhangXianYiIcon;
- break;
- case GongChengType.chuiXianZuoBiaoYi:
- iconImg.sprite = chuiXianZuoBiaoYiIcon;
- break;
- case GongChengType.tuYaLiJi:
- iconImg.sprite = tuYaLiJiIcon;
- break;
- case GongChengType.yingLiJi:
- iconImg.sprite = yingLiJiIcon;
- break;
- case GongChengType.sanXiangWeiCuoJi:
- iconImg.sprite = sanXiangWeiCuoJiIcon;
- break;
- case GongChengType.erXiangCeFengJi:
- iconImg.sprite = erXiangCeFengJiIcon;
- break;
- case GongChengType.weiYiJi:
- iconImg.sprite = weiYiJiIcon;
- break;
- }
- nameText = this.transform.Find("Root").Find("nameText").GetComponent<Text>();
- nameText.text = $"{_data.name}";
- valueText = this.transform.Find("Root").Find("valueText").GetComponent<Text>();
- valueText.text = $"{_data.value} <size=12><color=FFFFFF>{_data.valueType}</color></size>";
-
- _Button.onClick.AddListener(() =>
- {
- GCJKLayer._Instance.OpenDeviceTrendPanel(_data.name,_data.type,_data.gid,_data.sid);
- });
- }
- // 分离的委托方法,便于解除绑定
- private void CameraBeginChange()
- {
- this.transform.Find("Root").gameObject.SetActive(false);
- }
- private void CameraEndChange()
- {
- this.transform.Find("Root").gameObject.SetActive(true);
- }
- // 在物体销毁前调用这个方法来解除绑定
- private void OnDestroy()
- {
- if (_camera)
- {
- _camera.GetComponent<CameraBird>().OnCameraBeginChange -= CameraBeginChange;
- _camera.GetComponent<CameraBird>().OnCameraEndChange -= CameraEndChange;
- }
- }
- void Update()
- {
- currentTime += Time.deltaTime;
- if (currentTime > 0.06f) {
- if (targetTransForm != null)
- {
- rect.transform.position = _camera.WorldToScreenPoint(targetTransForm.position);
- }
- currentTime = 0;
- }
-
- }
-
- bool IsObjectInCameraView(Transform objectTransform, Camera camera)
- {
- Vector3 objectScreenPosition = camera.WorldToScreenPoint(objectTransform.position);
- return objectScreenPosition.z > 0 &&
- objectScreenPosition.x > 0 &&
- objectScreenPosition.x < Screen.width &&
- objectScreenPosition.y > 0 &&
- objectScreenPosition.y < Screen.height;
- }
- }
|