c# - 修复一系列游戏对象
问题描述
我遇到了这个数组的问题。我需要在检查器中设置游戏对象,但我对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()
{
}
}
解决方案
渲染器不是游戏对象。它们是组件。
游戏对象是组件的容器——一个游戏对象包含许多组件。
此行无效(游戏对象不是组件!):
//Invalid!
var renderer = GetComponent<GameObject>();
您不应该设置组件的gameObject
属性!这不会神奇地将组件附加到新的游戏对象:
//Don't do this!!
renderer.gameObject = someGameObject
反而:
Renderer rend = someGameObject.AddComponent<Mesh renderer>();
推荐阅读
- azure - 如何使用 Azure CLI 从 Azure IoT 中心删除所有设备?
- android - 一个activity可以添加多少个fragment
- android - Dagger 2, Cicerone, Kotlin - 注入问题
- android - 任务:react-native-firebase:compileReleaseJavaWithJavac FAILED
- reactjs - 在 Redux 中反应更新数组状态
- pagespeed-insights - PageSpeedInsights v5 根据 URL 返回不同的结果
- html - 有人可以帮我用 nth-child 伪类来定位我的容器 div 吗?
- html - Angular 6 - 如何根据条件禁用 div
- c++ - 如何在事件循环中运行 QClipboard,然后在 QClipboard 完成将某些内容复制到剪贴板后退出应用程序?
- c# - 文本框中的上一个条目在 Windows 窗体中被删除