如何通过脚本启用/禁用按钮组件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过脚本启用/禁用按钮组件?相关的知识,希望对你有一定的参考价值。

我试图将屏幕分为2并在Unity中将它们用作2个不同的按钮(L,R)。但对于那些第一次玩的人,我想要显示按钮的文字和图像来教他们做什么,之后我想禁用按钮的图像和文字,它们仍然可以互动但不可见。

第一次屏幕

First time screen

我怎么能够 ?

答案

比你做的更简单,更可靠的方式就是向你的Button添加这样的东西:

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Button))]
[DisallowMultipleComponent]
public class HintsController : MonoBehaviour
{
    private Image _image;
    private Text _text;

    private float _originalAlpha;

    // optional to control if Hints should be enabled on starting the App
    public bool enableAtStart;

    private void Awake()
    {
        // GetComponentInChildren finds the component on this object or any
        // child of this object recursively
        // (true) : make sure you also find the components if this or the child objects
        // are currently disabled

        // On this way you don't even have to rely on that the Image is on the 
        // Button GameObject or below in the hierachy
        _image = GetComponentInChildren<Image>(true);
        _text = GetComponentInChildren<Text>(true);

        if(_image)
        {
            _originalAlpha = _image.color.a;
        }

        // optional to controll if Hints should be enabled on starting the App
        ShowHints(enableAtStart);
    }

    public void ShowHints(bool isVisible)
    {
        // Skip if no Image found
        if (_image)
        {
             var color = _image.color;
             color.a = isVisible ? _originalAlpha : 0;
             _image.color = color;
        }

        // Skip if no Text found
        if (_text)
        {
            _text.enabled = isVisible;
        }
    }
}

然后从另一个脚本,你根本无法做到,例如

// TODO somehow get the reference either to the button GameObject or the Button component
var button;

button.GetComponent<HintsController>().ShowHints(false);

禁用提示。

另一答案

我使用button.image.enabled = bool valuefor图像组件和button.transform.GetChild(0).gameObject.SetActive(bool value)作为文本。

另一答案

我建议只为场景视图中的每个按钮设置一个空,然后左右命名。拖动按钮图像(精灵)在场景上并调整大小以使摄像机正确定位。将boxCollider2D应用于两个父游戏对象(您创建的空虚并左右命名。)然后您将需要一些轻量级脚本。

伪智者我会说:

你会用:

void OnMouseDown(){
//button touched
}

查看按钮是否被按下。

当您的教程结束时,您将使用上面提到的代码或类似的东西设置图像和文本不可见。这个脚本在每个按钮上运行。

以上是关于如何通过脚本启用/禁用按钮组件?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在所有后台线程完成后启用按钮

如何在jquery中启用和禁用文本框[重复]

根据WPF中的TextBox Text属性启用/禁用按钮?

如何禁用或启用onMessageReceived的firebase推送通知?

要启用或禁用按钮上的选择组件,请单击角度材质

如何禁用在android片段类中按下的后退按钮