如何通过脚本启用/禁用按钮组件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过脚本启用/禁用按钮组件?相关的知识,希望对你有一定的参考价值。
我试图将屏幕分为2并在Unity中将它们用作2个不同的按钮(L,R)。但对于那些第一次玩的人,我想要显示按钮的文字和图像来教他们做什么,之后我想禁用按钮的图像和文字,它们仍然可以互动但不可见。
第一次屏幕
我怎么能够 ?
答案
比你做的更简单,更可靠的方式就是向你的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 value
for图像组件和button.transform.GetChild(0).gameObject.SetActive(bool value)
作为文本。
另一答案
我建议只为场景视图中的每个按钮设置一个空,然后左右命名。拖动按钮图像(精灵)在场景上并调整大小以使摄像机正确定位。将boxCollider2D
应用于两个父游戏对象(您创建的空虚并左右命名。)然后您将需要一些轻量级脚本。
伪智者我会说:
你会用:
void OnMouseDown(){
//button touched
}
查看按钮是否被按下。
当您的教程结束时,您将使用上面提到的代码或类似的东西设置图像和文本不可见。这个脚本在每个按钮上运行。
以上是关于如何通过脚本启用/禁用按钮组件?的主要内容,如果未能解决你的问题,请参考以下文章