【发布时间】:2020-04-29 20:54:13
【问题描述】:
我知道我一定是做错了什么,但是在用头撞了 8 个小时之后,我似乎无法发现我哪里出错了。
我有 2 个游戏对象“Block1”、“Block2”。当他们进入圈子时,我希望能够计算总块数。为此,我执行了以下操作:
在每个块上放置一个名为 NumberBlock 的脚本。然后我使用以下脚本将块转换为其整数: 公共整数; 字符串str;
private void Awake()
{
str = gameObject.transform.name; //first get the name
str = str.Substring(str.Length -1, 1); //remove all words apart from number
int.TryParse(str, out number); //convert string to number
}
这成功地给我留下了 int number = 1、2 等。
然后我将方块推入球体。球体有一个执行以下操作的脚本: 1-创建一个空的整数列表 2- OnTriggerEnter 检查对象标签不是玩家或地面 3- 获取对象 Numberblock Script 并检查块“IntNumber”,然后将其添加到 InCircle 列表中。最后一个 foreach 将每个数字相加得到一个总数(TotalBlocks)。
//跟踪圆圈中有多少个数字 public List InCircle = new List();
//add the total number in the blocks
public int BlockNumber;
public int TotalBLocks;
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
return;
}
if (other.CompareTag("Floor"))
{
return;
}
//get the blocks number
BlockNumber = other.transform.GetComponent<Numberblocks>().number;
//add block number to the list
InCircle.Add(BlockNumber);
foreach (int e in InCircle)
{
TotalBLocks += e;
}
}
在屏幕截图中看到的问题是 TotalBlocks 对值的求和不正确。块 1 和块 2 的总和应该是 3 而不是 4。InCircle 列表正确存储了 2 个值,我还通过存储也正确显示的游戏对象进行了验证。
请帮我看看我哪里做错了?enter image description here
【问题讨论】:
-
我也会注意获取号码的方法,如果你有超过 9 个块,它将停止工作(因为号码中会有多个数字)
-
是的,我确实注意到这将是一个问题,幸运的是对于游戏我不认为这将是一个问题,但它更多的是用于概念验证阶段,因为我的编码技能是一个笑话!跨度>
标签: c# unity3d visual-studio-2010 arraylist