90 lines
2.3 KiB
C#
90 lines
2.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
/// <summary>
|
|
/// 分类实例脚本
|
|
/// </summary>
|
|
public class ClassificationItem : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 是否已展开菜单
|
|
/// </summary>
|
|
public bool is_expanded;
|
|
/// <summary>
|
|
/// 分类名称
|
|
/// </summary>
|
|
public TextMeshProUGUI ClassificationName;
|
|
/// <summary>
|
|
/// 一级标题按钮
|
|
/// </summary>
|
|
public Button FirstTittle;
|
|
/// <summary>
|
|
/// 展开图标
|
|
/// </summary>
|
|
public Image Expand;
|
|
/// <summary>
|
|
/// 收起图标
|
|
/// </summary>
|
|
public Image Collapse;
|
|
/// <summary>
|
|
/// 二级菜单容器
|
|
/// </summary>
|
|
public RectTransform DeviceContent;
|
|
/// <summary>
|
|
/// 容器物体
|
|
/// </summary>
|
|
public RectTransform ParentContent;
|
|
|
|
/// <summary>
|
|
/// 设备预制体
|
|
/// </summary>
|
|
public static DeviceItem DeviceItemPrefab;
|
|
|
|
/// <summary>
|
|
/// 默认颜色
|
|
/// </summary>
|
|
public Color NormalColor = new Color(0.066f, 0.316f, 0.598f);
|
|
/// <summary>
|
|
/// 高亮颜色
|
|
/// </summary>
|
|
public Color HighlightColor = new Color(0, 0.766f, 1);
|
|
|
|
/// <summary>
|
|
/// 实例初始化
|
|
/// </summary>
|
|
public void Init(ClassificationData classificationData)
|
|
{
|
|
FirstTittle.onClick.AddListener(OnFirstTittleClick);
|
|
ParentContent = transform.parent.GetComponent<RectTransform>();
|
|
|
|
if (classificationData == null)
|
|
return;
|
|
|
|
//实例化分类并进一步实例化设备及其对应信息
|
|
ClassificationName.text = classificationData.classification;
|
|
if (DeviceItemPrefab == null) DeviceItemPrefab = Resources.Load<DeviceItem>("Prefabs/UI/DeviceItem");
|
|
for (int i = 0; i < classificationData.devices.Length; i++)
|
|
{
|
|
var inst = Instantiate(DeviceItemPrefab, DeviceContent);
|
|
inst.Init(classificationData.devices[i]);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 单击一级菜单事件
|
|
/// </summary>
|
|
private void OnFirstTittleClick()
|
|
{
|
|
is_expanded = !is_expanded;
|
|
Expand.gameObject.SetActive(!is_expanded);
|
|
Collapse.gameObject.SetActive(is_expanded);
|
|
DeviceContent.gameObject.SetActive(is_expanded);
|
|
|
|
//刷新布局
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(ParentContent);
|
|
}
|
|
}
|