控制器类似“状态机”,当“监听”的属性状态发生变化时(如按钮的按下点击、下拉框、菜单栏切换等),组件会显示不同的“页面”状态。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

/*
 * Author:W
 * 控制器:
 * 1.分页 一个组件可以由多个页面组成。
 * 2.按钮状态 按钮通常有按下、鼠标悬浮等多个状态,我们可以利用控制器为每个状态安排不同的显示内容。
 * 3.属性变化 利用控制器,我们可以使元件具有多个不同的形态,并且可以方便地切换。
 */
public class GControllerTest : MonoBehaviour {

	private GComponent root;

	private Controller controller;

	void Awake()
	{
		UIPackage.AddPackage("UI/Basics");
	}

	// Use this for initialization
	void Start () {
		root = this.GetComponent<UIPanel>().ui;

		controller = root.GetController("c2");

		//通过索引设置控制器的活动页面
		controller.selectedIndex = 0;

		//如果希望改变控制器时不触发Change事件
		controller.SetSelectedIndex(0);

		controller.onChanged.Add(()=> {
			Debug.Log("当前控制器的状态值 = "+controller.selectedIndex);
		});
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

运行结果如下

灵活恰当使用控制器,可以有效地实现组件内页面的状态切换。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐