所以我尝试克隆游戏对象,但我一直得到以下错误:
方框复制. cs(18,60):错误CS1503:论据二:无法从"UnityEngine.Vector2"转换为"UnityEngine. Transform"
下面是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BoxDuplication : MonoBehaviour
{
public GameObject boxOriginal;
void Start()
{
CreateBox(3);
}
void CreateBox(int boxNum)
{
for (int i = 0; i < boxNum; i ++)
{
GameObject boxClone = Instantiate(boxOriginal, new Vector2(boxOriginal.transform.position.x, i));
}
}
}
我试过使用set coordinates来放置instantiate standalone:
GameObject boxClone = Instantiate(boxOriginal, new Vector2(1, 1));
但这个也不行所以我的方法有问题
我试着通过浏览视频和其他堆栈溢出的帖子来找出我做错了什么,但是由于我对c#不太了解,我不知所措。有一些类似的帖子,但是我不认为它们能回答我的问题。如果它们能回答,那么我想我不理解这个概念。
谢谢,任何帮助都是非常感谢!
2条答案
按热度按时间r3i60tvu1#
Unity文档中的示例化减速为:
1.第一个月
public static Object Instantiate(Object original, Transform parent);
public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);
因此,在您的示例中,Instantiate方法需要一个父对象
Transform
,您还必须包含rotation和父对象。所以你的台词变成了:
transform
被用作父对象。如果需要,它可以被省略。将对象作为子对象来派生总是一个好主意。为了使层次结构清晰。fkaflof62#
您的问题是您没有设置新游戏对象的旋转。如果您想使用
Instantiate(boxOriginal, transform)
将其设置为脚本所连接的对象的子对象。这将起作用,您只需添加boxClone.transform.position += Vector3(1,1);
将其移动到所需的位置。* 注意 *boxClone.transform.localPosition
可能是您想要的。如果您使用
GameObject boxClone = Instantiate(boxOriginal, new Vector2(1, 1), Quaternion.identity);
,则应该没有问题。