C# 为什么计数器变量重置为0? 使用系统集合; 使用System.Collections.Generic; 使用System.Text.RegularExpressions; 使用UnityEngine; 公共类SecurityKeypadKeys:单行为 { 公共文本网格文本; 专用整数计数器=0; 私有void Start() { } 私有void OnMouseDown() { string[]digits=Regex.Split(transform.name,@“\D+”); foreach(以数字表示的字符串值) { 整数; if(int.TryParse(值,输出编号)) { 计数器++; 如果(计数器
我使用了一个断点,发现如果我按下数字1的按钮并按下8次,它将停止向文本写入下一个数字1,但如果我单击数字2,它将向文本写入另一个数字2的8倍 但是我希望玩家能够只键入8个数字,无论是12345678或8888888或0000000或56498611,如果玩家继续键入,则不会在文本中添加更多数字C# 为什么计数器变量重置为0? 使用系统集合; 使用System.Collections.Generic; 使用System.Text.RegularExpressions; 使用UnityEngine; 公共类SecurityKeypadKeys:单行为 { 公共文本网格文本; 专用整数计数器=0; 私有void Start() { } 私有void OnMouseDown() { string[]digits=Regex.Split(transform.name,@“\D+”); foreach(以数字表示的字符串值) { 整数; if(int.TryParse(值,输出编号)) { 计数器++; 如果(计数器,c#,unity3d,C#,Unity3d,我使用了一个断点,发现如果我按下数字1的按钮并按下8次,它将停止向文本写入下一个数字1,但如果我单击数字2,它将向文本写入另一个数字2的8倍 但是我希望玩家能够只键入8个数字,无论是12345678或8888888或0000000或56498611,如果玩家继续键入,则不会在文本中添加更多数字 问题是脚本附加到10个立方体上,它们的行为类似于按钮。因此,每次我单击另一个多维数据集(按钮)时,它都会将计数器重置为0。根据您的问题,我假设每个按钮都有不同的SecurityKeypadKeys实例。每
问题是脚本附加到10个立方体上,它们的行为类似于按钮。因此,每次我单击另一个多维数据集(按钮)时,它都会将计数器重置为0。根据您的问题,我假设每个按钮都有不同的SecurityKeypadKeys实例。每个实例都有自己的计数器,初始化为0,但写入相同的text.text。这意味着每一个数字都可以被按下8次 要更正此问题,您有两个选项:
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();
}
}
}
}
}
if(计数器<8)
{
计数器++;
text.text+=number.ToString();
}
您使用的是实例字段,而您可能打算使用静态字段。通过将private static int counter=0,将计数器设置为static
字段代码>。有关更多信息,请参见此处:
if (counter < 8)
{
counter++;
text.text += number.ToString();
}