韩唐伯石 2022-02-22 00:59 采纳率: 55%
浏览 54
已结题

Unity 如何做一个密码

我做了一个触发器,碰到玩家后会出现密码输入框,密码使用UI的inputfield实现的,但是输入后无法立刻检测,必须离开触发器后在触发一次才会执行if (pin.text == ppin)里的代码。
就是,第一次触发后开始输入密码,inputfield.text也开始变化,但if (pin.text == ppin)里的代码不执行,必须离开触发器再除法一次才会执行。
我觉得好像inputfield.text的内容好像没有确定,离开触发器后才能确定内容。
后面有两个截图,第一个是第一次触发触发器,密码输入对了,但没反应。第二个是第二次触发代码就直接运行了。
怎么让密码输入正确直接触发代码呢?(第一次输入按回车也没反应,好像不是普通的输入)


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

public class terminal : MonoBehaviour
{
    public GameObject panel;
    public GameObject platform;
    public GameObject block;
    public InputField pin;
    private string ppin = "308";

    void Start()
    {
        pin = GameObject.Find("Password").GetComponent<InputField>();
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "player")
        {
            panel.SetActive(true);
            if (pin.text == ppin)
            {
                Destroy(block);
                platform.SetActive(true);
            }
        }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.tag == "player")
        {
            panel.SetActive(false);
        }
    }
}

img

img

  • 写回答

4条回答 默认 最新

  • 陈言必行 Unity领域优质创作者 2022-02-22 17:51
    关注

    根据你的描述是需要在用户输入完密码后进行校验,你需要给InputField添加个监听就可以了

    比如:

    void Start()
    {
        pin = GameObject.Find("Password").GetComponent<InputField>();
        pin.onEndEdit.AddListener(OnEndInput);
    }
    
    void OnEndInput()
    {
          if (pin.text == ppin)
          {
               Destroy(block);
               platform.SetActive(true);
          }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 2月22日

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作