Unity中关于如何让Text随着Toggle选项栏选择形成明暗变化

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);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Nanceker/article/details/115335657