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实现源码是在哪里的呢?????

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值