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. 关闭弹窗再次打开,输入框自动清空、提示自动隐藏。
相关推荐
2401_894915533 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程
开发语言·python·tcp/ip·算法·unity
WarPigs5 小时前
PC端加载安卓AB包资源显示紫色的问题
unity
scott.cgi7 小时前
Unity使用AndroidX获取,导航栏与虚拟键盘的高度
unity·androidx·keyboard·导航栏高度·虚拟键盘高度·判断键盘关闭·获取虚拟键盘高度
丁小未9 小时前
Unity车机地图Tile流式渲染系统高性能架构方案
unity·架构·ecs·dots·车机系统·车机系统架构图
LONGZETECH12 小时前
工业实训仿真设计实践:电机拆装软件的 DAG 流程建模、工具精度分级与数据体系搭建
大数据·算法·unity·架构·汽车
Python私教13 小时前
Godot 4 CharacterBody2D 角色移动:输入、碰撞与八方向控制实战
人工智能·游戏引擎·godot·gdscript·游戏开发
派葛穆1 天前
Unity-UI 按钮点击弹窗功能
unity·游戏引擎
toponad1 天前
Unity Ads Bidding 现已正式加入TopOn 聚合平台
unity·topon
绿浪19841 天前
WPF UI标准流水线
ui·wpf