unity编写树形结构的文件管理页面

项目中需要实现点击"+"按钮展开对应分类下的所有训练科目,再次点击"--"按钮将对应分类下的训练科目隐藏并收起整个面板。对此,编写一个类,将其挂载到树形结构的父类上,代码如下:

csharp 复制代码
using UnityEngine;
using UnityEngine.UI;

public class TreeViewParent:MonoBehaviour
{
	public Button controlBtn;//树形展开/收回按钮
	public Sprite[] controlBtnSprite;//按钮切换的样式
	public Transform itemPanel;//树形子分支的父类
	
	public float width;//宽度
	public float itemHeight;//子分支的高度

	void Start()
	{
		controlBtn.onClick.AddListener(onControlBtnClicked);
	}
	
	void onControlBtnClicked()
	{
		if(controlBtn.GetComponent<Image>().sprite == controlBtnSprite[0])
		{
			controlBtn.GetComponent<Image>().sprite = controlBtnSprite[1];
			foreach(Transform item in itemPanel)
				item.gameObject.SetActive(true);
			transform.GetComponent<RectTransform>().sizeDelta = new Vector2(width, itemHeight * (itemPanel.childCount + 1));
		}
		else
		{
			controlBtn.GetComponent<Image>().sprite = controlBtnSprite[0];
			foreach(Transform item in itemPanel)
				item.gameObject.SetActive(false);
			transform.GetComponent<RectTransform>().sizeDelta = new Vector2(width, itemHeight);
		}
	}
}
相关推荐
kylezhao20192 小时前
C#序列化与反序列化详细讲解与应用
c#
JQLvopkk2 小时前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
故事不长丨2 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
kingwebo'sZone2 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
GLDbalala3 小时前
Unity基于自定义管线实现经典经验光照模型
unity·游戏引擎
大空大地20263 小时前
表达式与运算符
c#
向上的车轮4 小时前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
心疼你的一切5 小时前
Unity异步编程神器:Unitask库深度解析(功能+实战案例+API全指南)
深度学习·unity·c#·游戏引擎·unitask
呆呆敲代码的小Y7 小时前
【Unity 实用工具篇】 | Book Page Curl 快速实现翻书效果
游戏·unity·游戏引擎·u3d·免费游戏·翻书插件
.房东的猫16 小时前
ERP(金蝶云星空)开发【安装篇】
c#