ShanxiKnowledgeBase/SXKnowledgeBase-master/sxknowledgebase/Assets/Scripts/UI/Items/ClassificationItem.cs

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