我有一个数组“未定义”,我需要在数组中生成游戏对象 我知道实例化返回一个对象,但我希望它返回一个游戏对象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectSpawner : MonoBehaviour
{
public GameObject[] myObjects;
public float interval;
float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
Instantiate(myObjects, transform.position, Quaternion.identity);
timer -= interval;
}
}
}
我收到这个错误: Assets\Scripts\ObjectSpawner.cs(16,13):错误 CS0311:类型“UnityEngine.GameObject[]”不能用作泛型类型或方法“Object.Instantiate(T, Vector3, Quaternion)”中的类型参数“T” )'。没有从“UnityEngine.GameObject[]”到“UnityEngine.Object”的隐式引用转换。
我真的很感激你的帮助
我尝试了什么:
Instantiate(myObjects, transform.position, Quaternion.identity) as GameObject;
和
GameObject newObject = Instantiate(myObjects, transform.position, Quaternion.identity);
您正在使用Instantiate中的数组。 你需要通过
object
而不是array
如果您想实例化数组中的对象,请尝试使用 foreach 循环示例:
foreach (GameObject gameObject in myObjects) { Instantiate(...) }
还有一件可能对您有帮助的事情: 我看到你在用
public array
。如果你这样做只是为了将它暴露给编辑器,你可以使用 [SerializeField]
属性。如果你这样做是为了让另一个脚本可以使用它,请使用 getter 方法。