为何调用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
相关产品推荐
相关产品推荐

