| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | 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:0.00} <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()    {        if (targetTransForm != null)        {            Vector3 pos = _camera.WorldToScreenPoint(targetTransForm.position);            if (pos.z > 0)            {                rect.transform.position = pos;            }            else            {                rect.transform.position = new Vector3(10000, 10000, 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;    }}
 |