一、实现目标
通过点击按钮显示对象,再次点击按钮隐藏。
注:此处我将前文所做的上帝视角,飞行视角,以及人物模型自带的第一人称集合到了一个按钮。
二、实现方法
第一步:创建三个按钮,准备分别实现上帝视角,飞行视角,以及人物模型自带的第一人称。
第二步:创建一个Canvas -- ViewButtonsCanvas
第三步:将第一步创建的三个按钮整合到第二步创建的ViewButtonsCanvas中
第四步:创建一个Canvas -- MainButttonCavas,再创建一个Button -- mainButton作为其子类
第五步:创建脚本 -- ShowButtonsOnClicks
//version 0.2
using UnityEngine;
using UnityEngine.UI;
public class ShowButtonsOnClick : MonoBehaviour
{
public Canvas subButtonsCanvas; // 在Inspector中拖拽包含子按钮的Canvas到这里
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
ToggleSubButtonsCanvas();
}
}
public void ToggleSubButtonsCanvas()
{
subButtonsCanvas.gameObject.SetActive(!subButtonsCanvas.gameObject.activeSelf);
}
}
在 version - 0.2版本中,我发现我点击屏幕的任意地方都能调用ToggleSubButtonsCanvas(),这并不符合我所想的要求,所以我为按钮添加了onClick.AddListener(),从而实现只有点击到button的位置,才能实现显示与隐藏ViewButtonsCanvas。
//version - 0.3
using UnityEngine;
using UnityEngine.UI;
public class ShowButtonsOnClick : MonoBehaviour
{
public Canvas subButtonsCanvas; // 在Inspector中拖拽包含子按钮的Canvas到这里
private void Start()
{
Button mainButton = GetComponent<Button>(); // 假设这个脚本挂在了您想要响应点击的Button上
if (mainButton != null)
{
mainButton.onClick.AddListener(ToggleSubButtonsCanvas);
}
else
{
Debug.LogWarning("ShowButtonsOnClick script needs to be attached to a Button or provide a reference to the Button.");
}
}
public void ToggleSubButtonsCanvas()
{
subButtonsCanvas.gameObject.SetActive(!subButtonsCanvas.gameObject.activeSelf);
}
}
三、结果测试
实现点击Views -- 显示,然后再点击Views,隐藏。