方法一:网上有说这种的,
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实现源码是在哪里的呢?????