98 lines
2.8 KiB
C#
98 lines
2.8 KiB
C#
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<XuanBtn> 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;
|
||
}
|
||
} |