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; public void Init(DeviceIconData data) { _camera = CameraManager.instance.mainCamera; _data = data; targetTransForm = data.targetTransform; rect = this.GetComponent(); rect.anchoredPosition = new Vector2(2000, 0); iconImg = this.transform.Find("bg").GetComponent(); 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("nameText").GetComponent(); nameText.text = $"{_data.name}"; valueText = this.transform.Find("valueText").GetComponent(); valueText.text = $"{_data.value} {_data.valueType}"; _Button.onClick.AddListener(() => { GCJKLayer._Instance.OpenDeviceTrendPanel(_data.name,_data.type,_data.gid,_data.sid); }); } void Update() { if (targetTransForm != null) { if (IsObjectInCameraView(targetTransForm, _camera)) { rect.transform.position=_camera.WorldToScreenPoint(targetTransForm.position); } else { rect.transform.position = new Vector3(2000, 0, 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; } }