1 回答
TA贡献1817条经验 获得超6个赞
你在这里有一个竞争条件!在Update中Answer3script 的一个前可能被称为Textcontrol所以randQuestion仍可以有默认值-1
方案一
而不是第一个if你可以在两者中Update()简单地做
private void Update()
{
// Check if Textcontrol values are set already
if (Textcontrol.randQuestion < 0 || Textcontrol.correctAnswer.Count < Textcontrol.randQuestion + 1 || Textcontrol.correctAnswer[Textcontrol.randQuestion] == null ) return;
// ....
}
所以如果Textcontrol还没有准备好,那么什么都不会发生。
第二个条件|| Textcontrol.correctAnswer.Count < Textcontrol.randQuestion + 1确保具有您尝试访问的索引的元素存在于列表中。
请注意,string值可以是null!因此,第三个条件|| Textcontrol.correctAnswer[Textcontrol.randQuestion] == null确保您访问的索引处的值实际上具有有效值。如果您也想避免空字符串 ( ""),您也可以将其扩展为|| string.IsNullOrEmpty(Textcontrol.correctAnswer[Textcontrol.randQuestion])
解决方案2
(我更喜欢解决方案1)
去Edit-> Project Settings->Script Execution Order
单击+
并添加您的两个脚本Answer2Script
和Answer3Script
. 您也可以简单地将它们(一个一个地拖到该字段上)。这里没有给出Textcontrol
特定的执行时间,它将在 DefualtTime 块中执行。因此,只要确保你的两个脚本之后的DefaultTime
。比打Apply
。这可确保您的两个脚本始终在Default Time
-> after 之后执行Textcontrol
。
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报