Unity Pico开发之键盘输入

您所在的位置:网站首页 调出虚拟按键 Unity Pico开发之键盘输入

Unity Pico开发之键盘输入

2023-12-13 21:29| 来源: 网络整理| 查看: 265

在Pico的开发过程中,发现了一个严重的问题,Pico没有办法像手机那样调取键盘输入,如果想要调取,需要Pico那面的技术支持,非常的麻烦,所以就自己做了一个输入键盘,唯一的缺点就是不能进行中文输入,只能输入英文和数字。有需要的小伙伴可以借鉴一下,如果有更好的方法,欢迎指导,大家共同学习。工程文件会在文章末尾分想给大家 效果如下: 在这里插入图片描述 下面来分享一下实现过程: Pico开发最好不要用UI(Canvas),我最开始的时候用的就是UI,但是各种问题不断,所以后来改用Plane了。首先就是搭建上面效果图的场景,将所有的Plane摆放好,在要点击的地方放上一个BoxCollider,用来进行射线检测,就像下图 在这里插入图片描述 我们将建好的虚拟键盘放到Pvr_UnitySDK下面,Pico的搭建之前的文章就有,不懂的可以看一下(都到这一步了,不可能不知道咋弄)。 接下来就可进行编写代码了,在这之前还需要所有按键编辑一个Tag. 在这里就直接上代码了,代码中都有注释,简单易懂

using System.Collections.Generic; using UnityEngine; using Pvr_UnitySDKAPI; public class KeyInput : MonoBehaviour { private GameObject currentTrigerobj; /// /// 是否大写 /// private bool isUp = false; /// /// 显示输入的内容 /// public TextMesh Acctext; /// /// 存放按键的列表 /// public static List mList = new List(); /// /// 键盘 /// public GameObject Keyboard; /// /// 键盘父物体 /// public GameObject KeyboardFather; /// /// 是否隐藏 /// private bool isHide = true; /// /// 限制输入的字符数 /// private float Cha_max = 15; private float Cha_min = 0; /// /// 当前输入的字符数 /// public static float Cha_now = 0; public TextMesh bug; private void Awake() { Init(); KeyboardFather.SetActive(false); } // Use this for initialization void Start() { } // Update is called once per frame void Update() { if (Pvr_Controller.CurrColliderGameObject != null) { //获取选中的按键 CurrentTrigerObj = Pvr_Controller.CurrColliderGameObject; //播放选中动画 if (CurrentTrigerObj.tag == "Key" || CurrentTrigerObj.tag == "Back" || CurrentTrigerObj.tag == "Change" || CurrentTrigerObj.tag == "Ent" || CurrentTrigerObj.tag == "Sure" || CurrentTrigerObj.tag == "Return") { CurrentTrigerObj.GetComponent().Play(); } //获取选中按键的名称 string s = CurrentTrigerObj.name; if (Controller.UPvr_GetKeyDown(0, Pvr_KeyCode.TOUCHPAD) || Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { bug.text = "点击的按键为:"+CurrentTrigerObj.name; switch (CurrentTrigerObj.tag) { case "Account": //点击输入框显示键盘 Acctext = CurrentTrigerObj.GetComponentInChildren(); Cha_now = Acctext.text.Length; Keyboard.SetActive(true); break; case "Key": if (Cha_min


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3