unity 说它不能将 (int,int,int) 转换成 quartinon

unity says it can't convert (int,int,int) into a quartinon

我想做的就是编写一个自动生成的游戏,比如 flappy bird,但我遇到了我从未听说过的错误,据我研究,我认为没有其他人遇到过这些错误,我得到了 2 参数 3:无法从“(int,int,int)”转换为 'quaternion' 参数 4:无法将 'UnityEngine.Quaternion' 转换为 'UnityEngine.Transfrom'

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{   
    public GameObject prefab;
    public int objectCount;
    public float spacing;
    public GameObject prefab2;
    public int Height;

    void Start()
    {
        var position = new Vector3();
        
        for (int i = 0; i < objectCount; i++)
        {
             Instantiate(prefab, position, (0, Random.Range(-Height, Height), 0), Quaternion.identity);
            position.x += spacing;
        }
    }
    
}

我已经尝试过将它变成一个浮点数,但我没有成功,我是不是漏掉了什么?

您正在使用的 Instantiate 声明需要 4 个参数,因此它必须匹配:

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent); 

最后两个参数是Quaternion rotation & Transform parent。看起来好像您需要将 Quaternion.identity 作为倒数第二个参数并将父转换设置为最后一个。

Instantiate(prefab, position, Quaternion.identity, PARENT);

没有

Instantiate(GameObject, Vector3, (int,int,int), Quaternion)

我想你想为位置添加随机高度而不是将其设置为第三个参数。尝试

Instantiate(prefab, position + Vector3.up * Random.Range(-Height,Height), Quaternion.identity);

相反。

此外,如果您需要创建 Vector3,“(x,y,z)”是不够的,您必须键入“new Vector3(x,y,z)”。

您正在使用 4 个参数调用 Instantiate,其中的参数为

Instantiate(GameObjectToInstantiate, PositionInVector3, RotationInQuaternion, transform);

出于这个原因,unity 期望在第三个参数中出现 Quaternion,但您传递的是 (0, Random.Range(-Height, Height), 0)