首页 > 解决方案 > 修复一系列游戏对象

问题描述

我遇到了这个数组的问题。我需要在检查器中设置游戏对象,但我对renderer.gameobject.

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

public class Obstacle : MonoBehaviour, IRecyle
{

public GameObject[] obstacles;

public void Restart()
{
    var renderer = GetComponent<GameObject>();
    renderer.gameObject = obstacles[Random.Range(0, obstacles.Length)];
}

public void Shutdown()
{

}
}

标签: c#unity3d

解决方案


渲染器不是游戏对象。它们是组件。

游戏对象是组件的容器——一个游戏对象包含许多组件。

此行无效(游戏对象不是组件!):

//Invalid!
var renderer = GetComponent<GameObject>();

您不应该设置组件的gameObject属性!这不会神奇地将组件附加到新的游戏对象:

//Don't do this!!
renderer.gameObject = someGameObject

反而:

Renderer rend = someGameObject.AddComponent<Mesh renderer>();

推荐阅读