将vector3转换为变换

the*_*lon 0 c# unity-game-engine unity5

我正在制作一个spawner脚本,但有一个问题,我无法找到解决方案......

我得到一个错误说

"无法将类型'UnityEngine.Vector3'隐式转换为'UnityEngine.Transform'"

我可以通过添加.position来删除错误,spawningpos但这不起作用,因为它不是对象的转换只是脚本中的转换变量

public GameObject[] spawningObj;
public GameObject[] insects;
public GameObject[] invierment;
public GameObject[] inviermentSingel;
public Transform player;
public int maxNPCsPerChunk;
public int maxInectsPerChunk;
public int maxInviermentalsPerChunk;
public int spawningAria;

private Transform spawningpos;

// Use this for initialization
void Start()
{
    if (player == null)
        player = GameObject.FindWithTag("Player").transform;

    int max = Random.Range(0, maxInectsPerChunk);
    for (int i = 0; i < max; i++)
    {
        spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z);
        //Error on above line

        Instantiate(insects[Random.Range(0, insects.Length)], spawningpos); 
    }
Run Code Online (Sandbox Code Playgroud)

Alf*_*cre 7

您收到的错误很好地解释了您的问题,让我们来看看

"无法将类型'UnityEngine.Vector3'隐式转换为'UnityEngine.Transform'"

那你在哪里尝试将一个Transform值设置为Vector3?

private Transform spawningpos;
Run Code Online (Sandbox Code Playgroud)

spawningpos 是一个变形

spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z);
Run Code Online (Sandbox Code Playgroud)

但在这里你明确地将其价值设定为a Vector3

Instantiate(insects[Random.Range(0, insects.Length)], spawningpos); 
Run Code Online (Sandbox Code Playgroud)

然后在这一行上实例化对象 - 使用Transformas输入.正如您将在此处找到的,您正在使用该方法的重载实际上是要求父进程的 Transform,而是尝试使用它

private Vector3 spawningpos;
Run Code Online (Sandbox Code Playgroud)

其次是,和以前一样

spawningpos = new Vector3(Random.Range(-spawningAria, spawningAria) + transform.position.x, 2f, Random.Range(-spawningAria, spawningAria) + transform.position.z);
Run Code Online (Sandbox Code Playgroud)

最后

Instantiate(insects[Random.Range(0, insects.Length)], spawningpos, Quaternion.identity);
Run Code Online (Sandbox Code Playgroud)

此代码将调用方法的正确重载Instantiate,设置对象的循环在传递时是必需的Vector3