zoukankan      html  css  js  c++  java
  • 协程的NullReferenceException 错误

    1. public void loadPic(string url)
    2. {
    3. WWW www = new WWW(url);
    4. StartCoroutine(WaitForRequest(www));
    5. }
    6. IEnumerator WaitForRequest(WWW www)
    7. {
    8. yield return www;
    9. // check for errors
    10. if (www.error == null)
    11. {
    12. Debug.Log("WWW Ok!: " + www.text);
    13. image.GetComponent<Image>().overrideSprite = Sprite.Create(www.texture, new Rect(0, 0, 438, 441), new Vector2(0.5f, 0.5f));
    14. }
    15. else
    16. {
    17. Debug.Log("WWW Error: " + www.error);
    18. }
    19. }
    1. ApiClient apiclient = new ApiClient();
    2. string imageurl = apiclient.callSearchApiWithCSharp(realEstateType, preisText.text, zimmerText.text);
    3. Debug.Log(imageurl);
    4. apiclient.loadPic(imageurl);
    • 协同程序由协程调度程序运行,并且绑定到用于启动协程的MonoBehaviour。StartCoroutine是MonoBehaviour的实例成员。

    • 不得使用“new”创建所有组件。始终需要使用AddComponent创建组件。组件只能在GameObjects上“活动”。

    • 错误初始化的组件(即使用“new”创建)将变为“假的空对象”。

    “假空对象”是真正的C#托管类,但它们缺少引擎核心中的本机C ++等价物。它们仍然可以用作“普通”托管类,但是与Untiy无关的任何东西都可以工作。此外,“UnityEngine.Object”基类会重载==运算符,并且当它缺少本机部分时“伪造”该对象为空。当您使用new创建Component类或者销毁此类对象时,会发生这种情况。

    因此,解决方案是您必须将“ApiClient”组件附加到GameObject。与组件不同,GameObjects可以使用“new”创建。所以你可以简单地替换

    1. ApiClient apiclient = new ApiClient();

    1. ApiClient apiclient = (new GameObject("SomeObjName")).AddComponent<ApiClient>();

    这将创建一个名为“SomeObjName”的新GameObject,并将ApiClient组件添加到其中。

    请记住,GameObject(及其组件)现在将出现在场景中,直到您将其销毁。

    作为替代方案,您可以使用以下命令将ApiClient组件附加到调用脚本所附加到的同一个游戏对象:

    1. ApiClient apiclient = gameObject.AddComponent<ApiClient>();

    每个组件(因此MonoBehaviour)都具有gameObject可用于访问此组件所附加的GameObject 属性。

    编辑
    关于“销毁”的快速说明。销毁组件时,只会销毁和删除该组件。如果你在GameObject引用上调用Destroy,它将破坏包含所有附加组件的游戏对象(因为它们不存在没有GameObject)以及GameObject的所有子游戏对象。

    或者建一个该类的实例,不要用单例模式。

  • 相关阅读:
    疫情环境下的网络学习笔记 python 5.8 数据库入门终章
    疫情环境下的网络学习笔记 python 5.7 navicat数据库,例题,sql注入
    疫情环境下的网络学习笔记 python 5.6 暂时看看
    疫情环境下的网络学习笔记 python 5.5 MYSql 表关系,外键
    疫情环境下的网络学习笔记 python 5.4 数据库基础
    疫情环境下的网络学习笔记 python 4.30 初识数据库
    疫情环境下的网络学习笔记 python 4.29 网络小项目
    XJOI 夏令营501-511测试11 游戏
    XJOI 夏令营501-511测试11 统计方案
    CF1197D Yet Another Subarray Problem
  • 原文地址:https://www.cnblogs.com/mcyushao/p/9636467.html
Copyright © 2011-2022 走看看