我一直在与youtube教程合作这个项目,但我在代码方面遇到了一些问题。这是我的第一个项目,我对编码一无所知。这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformManager : MonoBehaviour
{
[SerializeField]
private GameObject[] _platformPrefabs;
// Start is called before the first frame update
void Start()
{
for (int i = 0; 1 < _platformPrefabs.Length; i++)
{
global::System.Object value = Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12));
}
}
// Update is called once per frame
void Update()
{
}
}
发布于 2022-08-18 10:58:03
您使用两个参数调用Instantiate
,这两个参数仅用于设置父参数,即Transform
。
您要做的是使用三个参数调用它,并传递一个Quaternion
进行旋转。如果您只想要默认的旋转,请传递Quaternion.identity
。
Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12), Quaternion.identity);
发布于 2022-08-18 10:59:33
Instantiate
是一个具有许多重载的函数,所以编译器期望得到与您提供的内容不同的东西,这一点可能不会马上显现出来。
就你而言:
Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12));
您使用两个参数,这意味着重写
public static Object Instantiate(Object original, Transform parent);
是使用的。
您可能想使用:
public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
您可以在代码中这样做,只需添加Quaternion.identity
,使违规行读到:
global::System.Object value = Instantiate(_platformPrefabs[i], new Vector3(0, 0, i * 12), Quaternion.identity);
https://stackoverflow.com/questions/73401361
复制相似问题