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);
		}
	}
}
相关推荐
攻城狮CSU1 小时前
C# 异步方法
开发语言·前端·c#
ekkcole1 小时前
java word转pdf工具类,兼容linux和windows服务器
开发语言·pdf·c#
yangshuquan2 小时前
C# 委托和事件的3点区别,你知道几个?
c#·委托·事件·编程技巧
作孽就得先起床4 小时前
unity UnauthorizedAccessException: 拒绝访问路径
unity·游戏引擎
tealcwu6 小时前
【Unity踩坑】Unity项目提示文件合并有冲突
elasticsearch·unity·游戏引擎
她说彩礼65万7 小时前
C# Lambda 表达式
开发语言·c#
烛阴8 小时前
C#常量(const)与枚举(enum)使用指南
前端·c#
阿Y加油吧9 小时前
java并发编程面试题精讲——day02
java·面试·c#
唐青枫10 小时前
C#.NET DateTime 最强入门到进阶:格式化、转换、UTC、时区全覆盖
c#·.net
tealcwu1 天前
【Unity小技巧】如何将3D场景转换成2D场景
3d·unity·游戏引擎