实际效果:

unity 调起输入法 unity怎么输入文字_输入框

此时有两个菜品,你可以修改他们的菜名,修改按钮和菜名是一体的。

点击修改按钮是这样:

unity 调起输入法 unity怎么输入文字_unity 调起输入法_02

原本输入框是没有任何东西的,我们可以让他存在菜名,方便我们进行小修改。

主要思路:

因为这个是小项目,所以变量需求很少,我就命名得很随意,都是一些abc,你们可以命名更规则的变量名字,不要学我0.0

后面就为修改按钮编写了一个脚本:

GameObject a;//原本的菜名
public GameObject b;
GameObject a1;
InputField inputField;

public void xiugai()//赋值要修改的物体并打开修改面板
    {

        a = transform.GetChild(0).gameObject;
        b.SetActive(true);
        //复制原有文本到输入框
        a1 = b.transform.GetChild(0).gameObject;//找到Inputfield;

        inputField = a1.GetComponent<InputField>();

        inputField.text = a.GetComponent<Text>().text;//菜名传到输入框
        
    }

unity 调起输入法 unity怎么输入文字_游戏引擎_03

修改面板一般是这个层级:输入框,取消,确定,就三个功能。

该脚本主要功能是,点击修改按钮,首先先将获取文本

 a = transform.GetChild(0).gameObject;

这句的意思是,将从该脚本挂载的物体的第一个子物体赋值给a

这个a就是这个(脚本放在button):

unity 调起输入法 unity怎么输入文字_unity 调起输入法_04

然后把该修改面板打开,

也就是b.SetActive(true);让xiugaimianban激活

a1 = b.transform.GetChild(0).gameObject;//找到Inputfield;

这句的意思是从b(也就是xiugaimianban)的位置开始获取它的第一个子物体,就是Input了。

本来默认是inputfield的,我改成input了

获取该子物体后,input的组件有很多,我们要的只有这个inputfield。

unity 调起输入法 unity怎么输入文字_输入框_05

然后为inputfield赋值,inputField = a1.GetComponent<InputField>();

这时候,使用inputfield.text=“你想要的字符串”,直接写就可以了

因为我们已经获取了wenben物体,所以可以直接获取它的组件text进行赋值

也就是:inputField.text = a.GetComponent<Text>().text;//菜名传到输入框

这样就简单完成了一个方便的小功能。

如果还想完成修改功能,要做的就多了

给你们讲一下主要思路,或许有些人想知道

1.建立一个单例模式的类,在xiugai函数里面就保存wenben物体

2.在xiugaimianban输入要改的菜名时,确定按钮的函数功能与xiugai函数写在一起

3.提取单例模式存储的物体,与xiugai函数反过来赋值即可,大概例子是这样:

public void SetText()
    {
        //这个是获取信息
        a1 = transform.parent.GetChild(0).gameObject;//获取该脚本物体的父物体,然后该父物体的第一个子物体

        xinxi = Xinxizhongzhuanzhan.Instance();
        inputField = a1.GetComponent<InputField>();//赋值InputField组件

        xinxi.a.GetComponent<Text>().text = inputField.text;

        b = transform.parent.gameObject;//回到修改面板
        b.SetActive(false);
    }

unity 调起输入法 unity怎么输入文字_游戏引擎_03

上面代码放在yesbtn,xinxi就是那个存储数据的类,是一个单例模式,必须单例模式,不然数据是传不到的

以上代码仅供参考0.0

加油!

单例模式例子:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.TextCore.Text;
using UnityEngine.UI;

public class Xinxizhongzhuanzhan
{
    private static Xinxizhongzhuanzhan _instance = null;
    public GameObject a;
   
    private Xinxizhongzhuanzhan()
    {

    }

    public static Xinxizhongzhuanzhan Instance()
    {

        if (_instance == null)
        {
            _instance = new Xinxizhongzhuanzhan();
        }
        return _instance;
    }
    public void Seta(GameObject a)
    {
        this.a = a;
    }
}