我正在尝试使用Unity的UI系统。
我想要的是,我有一个按钮#1作为一个卡图像,我有按钮2作为一个黑桃图像。首先,我将点击黑桃图像,它的指示器将打开。之后,我将点击卡图像,使黑桃图标图像消失。我设法得到变量从脚本到另一个脚本,但无论我做的第一次点击黑桃按钮,指示灯亮起,检查器中的spadeselected
bool发生变化。当spadeselected
为真时,第一次单击Card图像没有任何作用。单击两次之后,一切正常。什么可能导致此问题?
我的main
卡按钮脚本:
public class main : MonoBehaviour
{
private bool ace = false;
spadestatement _spadestatement;
public GameObject spadebutton;
public GameObject spade_icon;
private void Awake()
{
_spadestatement = spadebutton.GetComponent<spadestatement>();
}
private void Start()
{
gameObject.GetComponent<Button>().onClick.AddListener(turnoff);
}
private void turnoff()
{
ace ^= true;
if (_spadestatement.spadeselected == true)
{
spade_icon.SetActive(ace);
}
}
}
我的黑桃按钮spadestatement
脚本:
public class spadestatement : MonoBehaviour
{
public bool spadeselected;
public GameObject indicator;
void Start()
{
gameObject.GetComponent<Button>().onClick.AddListener(select);
}
public void select()
{
spadeselected ^= true;
indicator.SetActive(spadeselected);
}
}
这里有一张图片让它更容易理解:
1条答案
按热度按时间aij0ehis1#
当
spadeselected
为true时,第一次调用turnoff()
时:第二次调用
turnoff()
时,ace
变为false
,因此spade_icon处于非活动状态。如果你想打开/关闭spade_icon,可以试试这个:
或者,如果您不想将
spade_icon
的活动/停用行为与ace
绑定,您可以: