Unity_Button按钮选中状态代码应该如何写

网上有说这种的,

       EventSystem.current.SetSelectedGameObject(gameObject);

也有说这种的

            UI.Button.Select();

网上也有说如何动态改变sprite state的

//(你TMD,改变一下,调用一下api,设一下值,这也配叫动态改变;对这个行业除了心凉还是心凉)

试了很多网上的方法,TMD就是不行,没效果

看了一下源码,(源码可以通过ilspy)但哥有更黑的黑科技,就不详细说了

反正看了一下源码,之后,整个人都不好了

!……&%~&……%¥!&……~%!~】

//Unity Selectable.cs源码的方法
    public virtual void Select()
    {
      if ((UnityEngine.Object) EventSystem.current == (UnityEngine.Object) null || EventSystem.current.alreadySelecting)
        return;
      EventSystem.current.SetSelectedGameObject(this.gameObject);
    }

其实这就是不行的原因

我这也没有具体解决方法,找到了估计也不会补充,随便吐槽一下而已

Unity的源码(选择时先取消选择+事件派发)

this.m_SelectionGuard = true;
        if ((UnityEngine.Object) selected == (UnityEngine.Object) this.m_CurrentSelected)
        {
          this.m_SelectionGuard = false;
        }
        else
        {
          ExecuteEvents.Execute<IDeselectHandler>(this.m_CurrentSelected, pointer, ExecuteEvents.deselectHandler);
          this.m_CurrentSelected = selected;
          ExecuteEvents.Execute<ISelectHandler>(this.m_CurrentSelected, pointer, ExecuteEvents.selectHandler);
          this.m_SelectionGuard = false;
        }

当然,最后发现所谓的BUG,或者不行,又TMD是自己的问题

其实调用Select()方法后,使用的是Button的Highlight。。。。。。。

必须设置Highlighted的Button才起作用;其他状态,如Normal,Disabled的使用时机和方法,可看我之前的博客

那UIButton实现源码是在哪里的呢?


版权声明:本文为avi9111原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。