Files
Zombie/Assets/_Zombie/Scripts/UI/XuanBtn.cs

98 lines
2.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}