Unity打开输入框时如何让输入框存在特定文字呢

实际效果:

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

点击修改按钮是这样:

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

主要思路:

因为这个是小项目,所以变量需求很少,我就命名得很随意,都是一些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;//菜名传到输入框
        
    }  

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

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

 a = transform.GetChild(0).gameObject;

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

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

然后把该修改面板打开,

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

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

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

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

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

然后为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);
    }

上面代码放在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;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值