在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 |