布局组件
布局效果
组件绑定
密码锁的实现代码
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class PasswordPanel : MonoBehaviour
{
// public Button button;
// 所有按键的父物体
public Transform buttonPanel;
// 输入字符串的文本框
public TMP_Text inputText;
// 所有按键的数组
public Button[] buttons;
// 解锁按键
public Button unlockButton;
// 密码锁对应的密码
public string password;
void Start() {
// 通过按键面板的子物体数量,初始化了一个childCount长度的数组
buttons = new Button[buttonPanel.childCount];
if (buttonPanel != null) {
// 循环childCount次,将buttonPanel下的所有子物体的Button脚本都添加进按键数组
for (int i = 0; i < buttonPanel.childCount; i++) {
buttons[i] = buttonPanel.GetChild(i).GetComponent<Button>();
}
}
// 为所有的按键添加监听
foreach (var button in buttons) {
button.onClick.AddListener(() => {
// 获取按键下挂载的文本
var currentButtonText = button.GetComponentInChildren<TMP_Text>();
// 如果当前按键所带的字符是"Exit"或者"C"
if (currentButtonText.text.Equals("Exit") || currentButtonText.text.Equals("C"))
{
// 额外执行Exit、或者C的功能,并跳过+=的过程
switch (currentButtonText.text)
{
case "Exit":
gameObject.SetActive(false); break;
case "C":
inputText.text = ""; break;
}
return;
}
// 将其加到文本框中
// 这里加了Trim()
inputText.text += currentButtonText.text.Trim();
});
}
// 添加了解锁按键
unlockButton.onClick.AddListener(() => {
if (inputText.text.Equals(password))
{
Debug.Log("开门");
}
});
// button.onClick.AddListener(ButtonOnClick);
}
void Update() {
}
}