Unity中关于如何让Text随着Toggle选项栏选择形成明暗变化
之前学习Unity的UGUI时遇到了一个问题:如何让做Toggle组件的选项栏中的标题随着选项栏的选择,使其跟选项栏同步进行明暗(开关)交换。
网上搜了蛮多类似的问题想要得到解答,结果都是在教授如何用Toggle使选项栏具备选择能力。后来慢慢找到了方法:
只要让Toggle组件的IsOn属性能够被实时监听,那么实现同步就不要多少麻烦了。
void Update()
{
Tg.onValueChanged.AddListener((bool isOn)=>OnToggleClick(Tg, isOn));
}//用Toggle.onValueChanged.AddListener来实现实时监听。
至于文本的改变可以考虑在函数内调整文本的RGB,或者跟我一样。
public void OnToggleClick(bool value)
{
if(value)
{
SelectText.SetActive(true);
NomalText.SetActive(false);
}
else
{
SelectText.SetActive(false);
NomalText.SetActive(true);
}
}
创建两个Text,一个是普通(未被选择)状态下的标题,一个是已选状态下的标题将其放置在同一位置,利用SetActice方法实现开关。
整体代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextToggle : MonoBehaviour
{
public GameObject Tab;
public GameObject NomalText;
public GameObject SelectText;
private Toggle Tg;
private bool isOn;
void Start()
{
Tg = Tab.gameObject.GetComponent<Toggle>();
}
void Update()
{
Tg.onValueChanged.AddListener((bool isOn)=>OnToggleClick(isOn));
}
public void OnToggleClick(bool value)
{
if(value)
{
SelectText.SetActive(true);
NomalText.SetActive(false);
}
else
{
SelectText.SetActive(false);
NomalText.SetActive(true);
}
}
}