你好,我正在创建一个小游戏,我需要实例化多个预制件,但我不知道如何让实例化返回一个游戏对象

问题描述 投票:0回答:1

我有一个数组“未定义”,我需要在数组中生成游戏对象 我知道实例化返回一个对象,但我希望它返回一个游戏对象

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);

unity3d
1个回答
0
投票

您正在使用Instantiate中的数组。 你需要通过

object
而不是
array
如果您想实例化数组中的对象,请尝试使用 foreach 循环示例:

foreach (GameObject gameObject in myObjects) { Instantiate(...) }

还有一件可能对您有帮助的事情: 我看到你在用

public array
。如果你这样做只是为了将它暴露给编辑器,你可以使用
[SerializeField]
属性。如果你这样做是为了让另一个脚本可以使用它,请使用 getter 方法。

© www.soinside.com 2019 - 2024. All rights reserved.