using System; using UnityEngine; using UnityEngine.UI; using TruegearSdk; public class XuanBtn : MonoBehaviour { public Text IPText; public Image BgImage; public Sprite[] BgSprites; // 未选中时的背景图片数组:第1个设备用BgSprites[0],第2个设备用BgSprites[1] public Sprite[] SelectedBgSprites; // 选中时的背景图片数组:第1个设备用SelectedBgSprites[0],第2个设备用SelectedBgSprites[1] private DeviceData _deviceInfo; private bool _isSelected = false; private int _deviceIndex = 0; // 选中回调 public Action OnSelectCallback; public void Init(DeviceData deviceInfo, int deviceIndex) { _deviceInfo = deviceInfo; _deviceIndex = deviceIndex; // 显示设备地址 if (IPText != null) { IPText.text = deviceInfo.address; } // 初始化时显示对应的背景图片 if (BgImage != null) { BgImage.enabled = true; if (BgSprites != null && BgSprites.Length > 0) { int bgIndex = _deviceIndex % BgSprites.Length; BgImage.sprite = BgSprites[bgIndex]; } BgImage.color = new Color(1, 1, 1, 1); } } // 选中设备(点击设备按钮时调用) public void OnTouchBtn() { // 点击时直接设为选中状态(不切换) // 选择逻辑在TrueGearPanel中处理 SetSelected(true); if (OnSelectCallback != null) { OnSelectCallback(this); } } // 设置选中状态 public void SetSelected(bool isSelected) { _isSelected = isSelected; if (BgImage != null) { BgImage.enabled = true; if (isSelected) { // 选中时使用SelectedBgSprites if (SelectedBgSprites != null && SelectedBgSprites.Length > 0) { int bgIndex = _deviceIndex % SelectedBgSprites.Length; BgImage.sprite = SelectedBgSprites[bgIndex]; } BgImage.color = new Color(1, 1, 1, 1); // 设置为不透明 } else { // 取消选中时使用BgSprites if (BgSprites != null && BgSprites.Length > 0) { int bgIndex = _deviceIndex % BgSprites.Length; BgImage.sprite = BgSprites[bgIndex]; } BgImage.color = new Color(1, 1, 1, 1); // 设置为不透明 } } } // 获取设备信息 public DeviceData GetDeviceInfo() { return _deviceInfo; } // 获取是否选中 public bool IsSelected() { return _isSelected; } }