You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity实例化GoodCube移动异常:误改Prefab而非实例对象

问题定位与修复方案

兄弟,我一眼就揪出你代码里的核心问题了——你在处理GoodCube的时候,错误地把预制体本身塞回了队列,而不是你刚刚实例化并调整过位置的那个游戏对象!

具体错误点

看你SpawnRow方法里的这段代码:

if (i == position)
{
    GameObject goodCube = goodCubes.Dequeue();
    goodCube.transform.position = spawnPoint;
    spawnPoint += new Vector2(1 * rowOffset, 0);
    goodCubes.Enqueue(goodcube); // 这里就是错误根源!
}

你从队列里取出的是之前实例化好的goodCube(场景里的实际游戏对象),修改完位置后,却把原始预制体goodcube(注意变量名大小写,你定义的预制体变量是小写开头的goodcube)塞回了队列。下次再从队列取GoodCube时,拿到的就是预制体本身,修改它的transform自然会直接改动预制体资源,而非场景里的运行实例。

修复步骤

只需要把错误的那一行改成把刚才操作的实例对象塞回队列即可:

goodCubes.Enqueue(goodCube); // 改成大写开头的goodCube,也就是你刚Dequeue出来的那个实例

额外小提示

你的脚本里有个变量名拼写错误:columus应该是columns,虽然不影响当前功能,但规范的命名能避免后续潜在的混淆问题~

内容的提问来源于stack exchange,提问作者Sixten Gons Larsson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:52:48