按钮 `OnSelect` 在 Unity.UI Canvas 情况下不起作用

Button `OnSelect` not functioning in Unity.UI Canvas situation

我有三个按钮,当你点击一个按钮时,会出现一个带有文本的面板。

问题是当我附加脚本时,没有任何反应。 "click" 已注册,但面板从未出现。

我的脚本附在每个按钮上,是这样的:

public GameObject panel; //i use to put the panel in unity
bool selected = false;

void Start () {    
    panel.SetActive(false); 
}

void OnSelect() {    
    selected = !selected;
    panel.SetActive(true);
}

我可能需要对面板做一些其他的事情,但我想不出来。

也许您已将脚本附加到面板。如果是这样,只要您的 GameObject 为 SetActive(false),您的脚本就无法执行。

希望能帮到你。

这样做:

(1) 将 canvas 添加到您的项目

(2) 重要提示 - 请务必 select 随屏幕尺寸缩放

这是您唯一使用过的。 Unity 不小心在那里设置了错误的默认值,他们还没有修复它。

(3) 在您的 Canvas 中,添加一个 BUTTON 让它说“测试”

(3) 在你的 Canvas 中,添加另一个 BUTTON 让它说“Another Test”

(4) 制作一个类似这样的脚本...

public class MainScreen:MonoBehaviour
    {
    public void UserClickedTest()
        {
        Debug.Log("test..");
        }
    public void UserClickedAnotherTest()
        {
        Debug.Log("another test..");
        }
    }

(5) 将该脚本的一个副本放在您喜欢的任何对象上。您可以将其放在相机上、canvas 上或其他任何有意义的地方

例如,现在假设您将它放在您的 CAMERA 对象上。

(6) 点击按钮“测试”.....

然后这样做...

  1. 单击 OnClick 下的加号按钮

  2. 您会在本例中看到标有“_main”的插槽。将您的 CAMERA 项目从 HEIRARCHY 拖到该插槽

  3. 使用下拉菜单:

select“UserClickedTest()”函数...

好吗?

  1. 现在对于另一个按钮,执行相同的操作,但 select“UserClickedAnotherTest()”函数。

  2. 大功告成! 运行 并测试!

除非使用 ISelectHandler 和更多东西,否则您无法使用 OnSelect 系统:这对初学者来说很难。我强烈建议 OP 掌握我在这里解释的更简单的技术。享受吧!