【问题标题】:StartCoroutine get error NullReferenceExceptionStartCoroutine 得到错误 NullReferenceException
【发布时间】:2014-04-09 00:30:07
【问题描述】:

我有两个 cs 文件,Main.cs 和 Menu.cs。在 Main.cs 文件中的 OnGUI 事件中,我从 Menu.cs 调用方法。

private void OnGUI()
{
    Menu menu=new Menu();
    menu.Create_Menu();
}

在 Menu.cs 中。

public void Create_Menu ()
{
    StartCoroutine(LoadCar());
}
private IEnumerator LoadCar()
{
    //Load Object
    Download    download;
    download=new Download();
    GameObject go = null;
    yield return StartCoroutine(LoadAsset("http://aleko-pc/3dobjects?key=1017&objecttype=1","car13",(x)=>{go = x;}));
}

我收到错误 NullReferenceException UnityEngine.MonoBehaviour.StartCoroutine(IEnumerator 例程)

如果我在 Main.cs 类中复制 私有 IEnumerator LoadCar() 方法,并从 OnGUI 调用它就可以工作。

也许我不了解 Coroutines 的工作区域,任何人可以帮助我吗?

【问题讨论】:

标签: unity3d unityscript


【解决方案1】:

首先,每帧都会调用 OnGUI 方法,我认为您不想每帧都下载资源。

其次,您需要确保 Menu 派生自 MonoBehviour 并添加到视图层次结构中。

更好的方法是将 Menu 作为组件添加到 GameObject(可能与附加 Main 脚本相同)并在 Start 上调用 Create_Menu菜单方法。

【讨论】:

  • 感谢您的回复,我会回答您的问题。首先,我展示的脚本是我项目的一部分,实际上我在单击菜单按钮时下载资产。其次,Menu 类派生自 MonoBehavior 并附加在 GameObject 上。第三,我的菜单是由按钮组合而成的,所以它需要在新框架中重绘,这就是它在 OnGUI 中的原因。
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 2010-09-30
相关资源
最近更新 更多