天津23维预案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
1.8 KiB

2 years ago
using UnityEngine;
using System.Collections;
namespace UIWidgets {
/// <summary>
/// TreeView component.
/// </summary>
[AddComponentMenu("UI/UIWidgets/TreeViewComponent")]
public class TreeViewComponent : TreeViewComponentBase<TreeViewItem> {
TreeViewItem item;
/// <summary>
/// Gets or sets the item.
/// </summary>
/// <value>The item.</value>
public TreeViewItem Item {
get {
return item;
}
set {
if (item!=null)
{
item.OnChange -= UpdateView;
}
item = value;
if (item!=null)
{
item.OnChange += UpdateView;
}
UpdateView();
}
}
/// <summary>
/// Sets the data.
/// </summary>
/// <param name="newNode">Node.</param>
/// <param name="depth">Depth.</param>
public override void SetData(TreeNode<TreeViewItem> newNode, int depth)
{
Node = newNode;
base.SetData(Node, depth);
Item = (Node==null) ? null : Node.Item;
}
/// <summary>
/// Updates the view.
/// </summary>
protected virtual void UpdateView()
{
if ((Icon==null) || (Text==null))
{
return ;
}
if (Item==null)
{
Icon.sprite = null;
Text.text = string.Empty;
}
else
{
Icon.sprite = Item.Icon;
Text.text = Item.LocalizedName ?? Item.Name;
}
if (SetNativeSize)
{
Icon.SetNativeSize();
}
//set transparent color if no icon
Icon.color = (Icon.sprite==null) ? Color.clear : Color.black;
}
/// <summary>
/// Called when item moved to cache, you can use it free used resources.
/// </summary>
public override void MovedToCache()
{
if (Icon!=null)
{
Icon.sprite = null;
}
}
/// <summary>
/// This function is called when the MonoBehaviour will be destroyed.
/// </summary>
protected override void OnDestroy()
{
if (item!=null)
{
item.OnChange -= UpdateView;
}
base.OnDestroy();
}
}
}