【发布时间】:2020-09-23 21:01:32
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
public class SecurityKeypadKeys : MonoBehaviour
{
public TextMesh text;
private int counter = 0;
private void Start()
{
}
private void OnMouseDown()
{
string[] digits = Regex.Split(transform.name, @"\D+");
foreach (string value in digits)
{
int number;
if (int.TryParse(value, out number))
{
counter++;
if (counter < 8)
{
text.text += number.ToString();
}
}
}
}
}
我使用了一个断点,发现如果我按下一个数字 1 的按钮并按下它 8 次,那么它将停止将下一个数字 1 写入文本,但是如果我点击数字 2,它将写入到文本另外 2 个数字的 8 倍。
但我希望玩家只能输入 8 个数字,无论是 12345678 或 88888888 或 0000000 还是 56498611,然后如果玩家继续输入,它将不会在文本中添加更多数字。
问题是脚本附加到 10 个立方体上,就像按钮一样。所以每次我点击另一个立方体(按钮)时,它都会将计数器重置为 0。
【问题讨论】:
-
当您可能打算使用静态字段时,您正在使用实例字段。通过将
counter更改为private static int counter = 0;,将static字段设为static。请参阅此处了解更多信息:What does `static` mean in c#?