猿问

为什么我的数组长度表达式只返回1?

我正在Unity中开发游戏,只是注意到有时会出现一个奇怪的错误。发生的事情是,我正在实例化的字符串数组创建的太短,即使我正在编写的日志消息确认该表达式应该创建一个更大的数组。

以下是相关的代码段:

Debug.Log("hero.power = " + hero.power.ToString());

Debug.Log("allyPower = " + allyPower.ToString());

Debug.Log("opponent.power = " + opponent.power.ToString());

int max = Mathf.Max(hero.power + allyPower, opponent.power);

report.flips[hero.name] = new string[hero.power + allyPower];

report.flips[opponent.name] = new string[opponent.power];

Debug.Log("max = " + max.ToString());

Debug.Log("report.flips[hero.name].Length = " + report.flips[hero.name].Length.ToString());

以及在Unity中创建的输出:

这表明hero.power是3和allyPower是,0但是创建了而不是string[3]创建string[1]。


关于使用表达式确定引起问题的数组的长度,这有什么用吗?我暂时更改为:


int heroArrayLength = hero.power + allyPower;

report.flips[hero.name] = new string[heroArrayLength];

它似乎有所帮助,尽管该错误以前是不稳定的,所以我不确定它是否已修复。即使是这样,我仍然不清楚真正的原因是什么。


有人知道这里发生了什么吗?


开满天机
浏览 291回答 1
1回答
随时随地看视频慕课网APP
我要回答