You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.3 KiB
C#

using UnityEngine;
using FairyGUI;
public class TreeViewMain : MonoBehaviour
{
GComponent _mainView;
GTree _tree1;
GTree _tree2;
string _fileURL;
void Awake()
{
Application.targetFrameRate = 60;
Stage.inst.onKeyDown.Add(OnKeyDown);
}
void Start()
{
_mainView = this.GetComponent<UIPanel>().ui;
_fileURL = "ui://TreeView/file";
_tree1 = _mainView.GetChild("tree").asTree;
_tree1.onClickItem.Add(__clickNode);
_tree2 = _mainView.GetChild("tree2").asTree;
_tree2.onClickItem.Add(__clickNode);
_tree2.treeNodeRender = RenderTreeNode;
GTreeNode topNode = new GTreeNode(true);
topNode.data = "I'm a top node";
_tree2.rootNode.AddChild(topNode);
for (int i = 0; i < 5; i++)
{
GTreeNode node = new GTreeNode(false);
node.data = "Hello " + i;
topNode.AddChild(node);
}
GTreeNode aFolderNode = new GTreeNode(true);
aFolderNode.data = "A folder node";
topNode.AddChild(aFolderNode);
for (int i = 0; i < 5; i++)
{
GTreeNode node = new GTreeNode(false);
node.data = "Good " + i;
aFolderNode.AddChild(node);
}
for (int i = 0; i < 3; i++)
{
GTreeNode node = new GTreeNode(false);
node.data = "World " + i;
topNode.AddChild(node);
}
GTreeNode anotherTopNode = new GTreeNode(false);
anotherTopNode.data = new string[] { "I'm a top node too", "ui://TreeView/heart" };
_tree2.rootNode.AddChild(anotherTopNode);
}
void RenderTreeNode(GTreeNode node, GComponent obj)
{
if (node.isFolder)
{
obj.text = (string)node.data;
}
else if (node.data is string[])
{
obj.icon = ((string[])node.data)[1];
obj.text = ((string[])node.data)[0];
}
else
{
obj.icon = _fileURL;
obj.text = (string)node.data;
}
}
void __clickNode(EventContext context)
{
GTreeNode node = ((GObject)context.data).treeNode;
Debug.Log(node.text);
}
void OnKeyDown(EventContext context)
{
if (context.inputEvent.keyCode == KeyCode.Escape)
{
Application.Quit();
}
}
}