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

为何调用Instantiate函数后场景中心会额外生成立方体对象?

问题原因及解决办法

问题出在你调用的API逻辑上:

  • GameObject.CreatePrimitive(PrimitiveType.Cube) 这个方法会直接在场景原点(0,0,0)生成一个立方体,这就是你看到的场景中心的那个。
  • 紧接着你又用Instantiate()复制了这个刚生成的立方体,把副本放到了你设置的目标位置,所以最终出现两个立方体。

修复方法很简单,不需要用Instantiate(),直接创建立方体后设置它的位置就行:

void Start() {
    Vector2 p = gameObject.transform.position;
    // 创建立方体并直接设置位置
    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    cube.transform.position = new Vector3(p.x + 0.5f * 0.86f, p.y - 0.5f * 0.5f, 0);
}

如果你后续需要对这个立方体做克隆操作,也可以先把它作为临时对象创建,再通过Instantiate()复制,但当前场景下完全没必要多这一步,直接创建+设位置就够了。

内容的提问来源于stack exchange,提问作者Kirill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:34:51