Unity-UI 输入框功能

一、最终实现效果

  1. 点击【打开弹窗】按钮弹出登录面板,包含账号输入框、密码输入框、登录按钮;
  2. 底部提示文本默认隐藏;
  3. 账号密码匹配:提示文本激活、绿色文字 login success;
  4. 账号密码错误:提示文本激活、红色文字 login fail;
  5. 可复用原有弹窗管理器,低耦合拓展登录逻辑。

标注:弹窗内 InputField 账号、InputField 密码、登录 Button、默认关闭的提示 Text


二、Hierarchy 层级结构

cs 复制代码
Canvas
├─ OpenBtn
└─ PopWindow(默认取消激活)
   ├─ Background(全屏遮罩)
   └─ Panel(弹窗底板)
      ├─ TitleText 弹窗标题
      ├─ Input_Account 账号输入框(UI→Input Field)
      ├─ Input_Pwd 密码输入框(UI→Input Field,勾选Password类型)
      ├─ Btn_Login 登录按钮
      ├─ Text_Tip 提示文字(默认取消Active,字体默认透明/隐藏)
      └─ CloseBtn 关闭弹窗按钮

标注:Text_Tip 物体左上角取消勾选,初始隐藏状态

2.1 输入框关键设置

  1. 账号输入框 Input_Account 直接默认设置即可,Placeholder 填写:请输入账号
  2. 密码输入框 Input_Pwd
  • 勾选 Input Field 组件下 Password(内容圆点隐藏)
  • Placeholder 填写:请输入密码

2.2 提示文本 Text_Tip 设置

  1. 字体大小调大,居中放置在登录按钮下方;
  2. Inspector 取消 GameObject 激活(默认不显示);
  3. 脚本动态修改文字颜色与内容。

三、完整升级脚本 PopWindowManager.cs

直接替换原有脚本,注释清晰可直接看懂逻辑

cs 复制代码
using UnityEngine;
using UnityEngine.UI;
using TMPro; // 必须引入TMP命名空间

public class PopWindowManager : MonoBehaviour
{
    [Header("弹窗本体")]
    public GameObject popWindowObj;

    [Header("TMP登录组件拖拽赋值")]
    public TMP_InputField inputAccount;    // TMP账号输入框
    public TMP_InputField inputPwd;       // TMP密码输入框
    public TMP_Text textTip;              // TMP提示文字

    // 预设正确账号密码
    private readonly string correctAccount = "admin";
    private readonly string correctPwd = "123456";

    void Start()
    {
        // 初始化隐藏弹窗、隐藏提示文本
        popWindowObj.SetActive(false);
        textTip.gameObject.SetActive(false);
    }

    #region 弹窗开关方法
    /// <summary>打开登录弹窗</summary>
    public void OpenPopWindow()
    {
        popWindowObj.SetActive(true);
        // 打开弹窗清空输入框内容,隐藏上次登录提示
        inputAccount.text = "";
        inputPwd.text = "";
        textTip.gameObject.SetActive(false);
    }

    /// <summary>关闭弹窗</summary>
    public void ClosePopWindow()
    {
        popWindowObj.SetActive(false);
    }
    #endregion

    /// <summary>登录校验(绑定给TMP登录按钮OnClick)</summary>
    public void LoginCheck()
    {
        // 去除首尾空格获取输入内容
        string account = inputAccount.text.Trim();
        string pwd = inputPwd.text.Trim();

        if (account == correctAccount && pwd == correctPwd)
        {
            // 登录成功:绿色文字
            textTip.text = "login success";
            textTip.color = Color.green;
        }
        else
        {
            // 登录失败:红色文字
            textTip.text = "login fail";
            textTip.color = Color.red;
        }
        // 激活提示文本显示结果
        textTip.gameObject.SetActive(true);
    }
}

获取输入框内容的关键代码

cs 复制代码
        // 去除首尾空格获取输入内容
        string account = inputAccount.text.Trim();
        string pwd = inputPwd.text.Trim();

四、按钮 OnClick 事件绑定步骤

4.1 登录按钮绑定 LoginCheck 方法

  1. 选中层级内 Btn_Login 登录按钮;
  2. On Click 区域点+号,拖拽挂载脚本的 Canvas 物体到对象槽;
  3. 下拉菜单选择:PopWindowManager → LoginCheck();

4.2 原有按钮绑定不变(上个博客)

  • 打开弹窗按钮:绑定OpenPopWindow()
  • 关闭弹窗按钮:绑定ClosePopWindow()

⚠️ 关键避坑

  1. LoginCheck 必须是 public void 无参数,否则下拉菜单看不到;
  2. Unity 控制台不能有脚本红色报错,否则无法反射方法;
  3. 必须拖拽挂载了脚本的 GameObject,不能只拖 cs 脚本文件。

五、测试操作流程

  1. 运行 Unity Game 窗口;
  2. 点击【打开弹窗】弹出登录面板;
  3. 测试 1:账号admin、密码123456 → 下方绿色login success;
  4. 测试 2:任意错误账号密码 → 下方红色login fail;
  5. 关闭弹窗再次打开,输入框自动清空、提示自动隐藏。
相关推荐
WarPigs12 小时前
Unity无法修改Assembly-CSharp.csproj错误
unity
特立独行的猫a19 小时前
仓颉语言GUI开发实战:用仓颉写串口/网络二合一调试助手
网络·ui·gui·harmonyos·tauri·仓颉
FairGuard手游加固1 天前
手游加固怎么做?SO、IL2CPP、AssetBundle 与运行时保护详解
安全·游戏·unity
wuyk5551 天前
PyQt6-第05讲-QtDesigner工作流与ui文件
python·ui·pyqt
Meta Luo1 天前
UI 自动化测试中的等待、超时和异步加载怎么处理
功能测试·测试工具·ui·回归·自动化
Light Gao1 天前
AI 对话助手如何实现动态交互?一文讲清 AG-UI、SSE、组件与工具调用
人工智能·ui·交互·大语言模型·sse·智能体·ag-ui
MicrosoftReactor2 天前
技术速递|当聊天框不再是合适的交互界面
ui·ai·copilot·canvas
秋名山小白2 天前
UI自动化-Airtest框架落地实战
运维·ui·自动化
const_qiu2 天前
第 2.5 章 2.5.8:质量关 —— 安全审查、UI/UX 审查与踩坑复盘
java·人工智能·安全·ui·ux
Autumn_ing2 天前
Design.md生成UI怎么验收?举例运营后台的颜色、状态和数据核对
前端·ui·ai·设计系统·paico·ai生成ui·design.md