Unity数组越界问题:Canvas复制对象随机整数生成失败
问题解决及代码修正
核心问题分析
- Inspector数组设置冲突:Unity中public数组若在编辑器面板手动修改过长度,会覆盖代码里的
new int[15]初始化逻辑。如果面板里数组长度被设为0,自然看不到任何元素。 - 循环索引范围错误:原循环从
i=1开始到i<15结束,仅填充了14个元素(索引1-14),遗漏了索引0的位置;同时局部变量i遮蔽了公共成员变量i,虽不影响功能,但易造成代码混淆。
修正后的代码
public int[] CPU_Model = new int[15]; public int[] CPU_MHz = new int[15]; public string[] CPU_Vars = new string[15]; public void Start() { // 循环覆盖数组所有索引(0-14),用Length替代硬编码更灵活 for (int i = 0; i < CPU_Model.Length; i++) { Debug.Log(i); CPU_Model[i] = Random.Range(400, 9999); CPU_MHz[i] = Random.Range(1200, 5400); CPU_Vars[i] = "CPU" + (i + 1); // 若需从CPU1开始命名则加1,否则直接用i } }
额外操作提示
- 打开Unity编辑器面板,检查三个数组的长度是否为15,若不是手动改回,或右键数组选择Reset重置为代码初始值。
- 避免成员变量与局部变量同名,减少后续编码时的逻辑混淆。
内容的提问来源于stack exchange,提问作者Ahmad_Coffee
相关产品推荐
相关产品推荐

