最近研究UGUI中inputfield中按tab键切换的功能。
开始没有想到自己实现,就在网上搜了一下。果然还真有。
以下,是我找的帖子。
https://www.cnblogs.com/feiyanstudio/articles/7326212.html
把代码拷到本地,拖到inputfield上,直接就能用了。
但是,在用着的时候,会出现在按下Tab键的时候,inputfield的光标会跳级。比如三个自上而下的inputfield,在第一个inputfield按下Tab键的时候,光标会跳到第三个里面。
经过分析之后,光标其实已经在第二个inputfield里面出现过,此时第二个inputfield会触发OnSelect事件,同时update也会接收到Tab键事件,这样就相当于第二个inputfield也按下了一次tab键。
怎么解决这个问题呢?
加个字段 private bool delayed_frame { get; set; }
在Update前面加上如下代码
if(delayed_frame)
{
delayed_frame = false;
return;
}
同时在OnSelect里面设置delayed_frame为true。这样就屏蔽了在inputfield被选中是按下tab键的一帧(我们在手动操作下也不会,也不希望出现这样的情况)。
最后对遇到此类的问题的同行们有所帮助。