unity Tab键实现切换输入框功能

简介: 该脚本用于简化输入框之间的Tab键切换操作。只需将脚本挂载在InputField上,无需其他设置。脚本通过监听Tab键和Shift键组合,自动选择下一个或上一个可交互的InputField,提升用户体验。

搭建场景的时候用到输入框的时候就把脚本挂载上去即可,其他的什么都不需要管,就可以切换了
InputField挂载的脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
/// <summary>
/// ************************************本脚本挂在输入框上即可*********************************************
/// </summary>
public class Tabcoll : MonoBehaviour, ISelectHandler, IDeselectHandler
{
    public void OnDeselect(BaseEventData eventData)
    {
        _instacnet = false;
    }

    public void OnSelect(BaseEventData eventData)
    {
        _instacnet = true;
    }
    EventSystem system;
    private bool _instacnet = false;
    // Use this for initialization
    void Start()
    {
        system = EventSystem.current;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Tab) && _instacnet)
        {
            Selectable _Nect = null;
            if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
            {
                _Nect = system.currentSelectedGameObject.GetComponent<Selectable>().FindSelectableOnUp();
                if (_Nect == null) _Nect = system.lastSelectedGameObject.GetComponent<Selectable>();

            }
            else
            {
                _Nect = system.currentSelectedGameObject.GetComponent<Selectable>().FindSelectableOnDown();
                if (_Nect == null) _Nect = system.firstSelectedGameObject.GetComponent<Selectable>();
            }
            if (_Nect != null)
            {
                InputField inputField = _Nect.GetComponent<InputField>();
                system.SetSelectedGameObject(_Nect.gameObject, new BaseEventData(system));
            }
            else
            {
                Debug.LogError("没有下一个组件");
            }
        }
    }

}
相关文章
|
11月前
|
定位技术 C# 图形学
从零开始的unity3d入门教程(二)----基本功能讲解
这是一篇Unity3D入门教程,详细介绍了Unity界面操作、游戏物体创建修改、场景搭建、玩家控制、音效添加以及游戏测试和导出的全过程。
从零开始的unity3d入门教程(二)----基本功能讲解
|
11月前
|
图形学
小功能⭐️Unity获取场景中所有物体
小功能⭐️Unity获取场景中所有物体
小功能⭐️Unity获取场景中所有物体
|
11月前
|
图形学
小功能⭐️Unity UnityEvent实现代码的选择
小功能⭐️Unity UnityEvent实现代码的选择
|
11月前
|
机器学习/深度学习 图形学 Windows
小功能⭐️unity3d KeyCode各键值说明
小功能⭐️unity3d KeyCode各键值说明
|
11月前
|
图形学 Android开发
小功能⭐️Unity调用Android常用事件
小功能⭐️Unity调用Android常用事件
|
11月前
|
图形学
小功能⭐️获取Unity游戏物体上,所挂载组件的名称
小功能⭐️获取Unity游戏物体上,所挂载组件的名称
|
11月前
|
图形学
小功能⭐️Unity截屏功能的实现
小功能⭐️Unity截屏功能的实现
|
11月前
|
图形学
小功能⭐️Unity中Texture2D、Sprite、Texture、RenderTexture、image、byte的转换
小功能⭐️Unity中Texture2D、Sprite、Texture、RenderTexture、image、byte的转换
|
11月前
|
图形学
|
10月前
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
956 0