协程的NullReferenceException 错误
public void loadPic(string url){WWW www = new WWW(url);StartCoroutine(WaitForRequest(www));}IEnumerator WaitForRequest(WWW www){yield return www;// check for errorsif (www.error == null){Debug.Log("WWW Ok!: " + www.text);image.GetComponent<Image>().overrideSprite = Sprite.Create(www.texture, new Rect(0, 0, 438, 441), new Vector2(0.5f, 0.5f));}else{Debug.Log("WWW Error: " + www.error);}}
ApiClient apiclient = new ApiClient();string imageurl = apiclient.callSearchApiWithCSharp(realEstateType, preisText.text, zimmerText.text);Debug.Log(imageurl);apiclient.loadPic(imageurl);
协同程序由协程调度程序运行,并且绑定到用于启动协程的MonoBehaviour。StartCoroutine是MonoBehaviour的实例成员。
不得使用“new”创建所有组件。始终需要使用AddComponent创建组件。组件只能在GameObjects上“活动”。
错误初始化的组件(即使用“new”创建)将变为“假的空对象”。
“假空对象”是真正的C#托管类,但它们缺少引擎核心中的本机C ++等价物。它们仍然可以用作“普通”托管类,但是与Untiy无关的任何东西都可以工作。此外,“UnityEngine.Object”基类会重载==运算符,并且当它缺少本机部分时“伪造”该对象为空。当您使用new创建Component类或者销毁此类对象时,会发生这种情况。
因此,解决方案是您必须将“ApiClient”组件附加到GameObject。与组件不同,GameObjects可以使用“new”创建。所以你可以简单地替换
ApiClient apiclient = new ApiClient();
同
ApiClient apiclient = (new GameObject("SomeObjName")).AddComponent<ApiClient>();
这将创建一个名为“SomeObjName”的新GameObject,并将ApiClient组件添加到其中。
请记住,GameObject(及其组件)现在将出现在场景中,直到您将其销毁。
作为替代方案,您可以使用以下命令将ApiClient组件附加到调用脚本所附加到的同一个游戏对象:
ApiClient apiclient = gameObject.AddComponent<ApiClient>();
每个组件(因此MonoBehaviour)都具有gameObject可用于访问此组件所附加的GameObject 的属性。
编辑
关于“销毁”的快速说明。销毁组件时,只会销毁和删除该组件。如果你在GameObject引用上调用Destroy,它将破坏包含所有附加组件的游戏对象(因为它们不存在没有GameObject)以及GameObject的所有子游戏对象。
或者建一个该类的实例,不要用单例模式。
协程的NullReferenceException 错误的更多相关文章
- lua中的协程
lua中的协程和线程类似: 1. 协程拥有自己的独立的栈,局部变量,和指令: 2. 所有协程都可以共享全局变量: 3. 协程不能像线程那样并行执行,协程之间需要相互协调执行,同一个时刻只能运行一个协程 ...
- Openresty Lua协程调度机制
写在前面 OpenResty(后面简称:OR)是一个基于Nginx和Lua的高性能Web平台,它内部集成大量的Lua API以及第三方模块,可以利用它快速搭建支持高并发.极具动态性和扩展性的Web应用 ...
- 【错误总结1:unity StartCoroutine 报 NullReferenceException 错误】
今天在一个项目中,写了一个单例的全局类,该类的作用是使用协程加载场景.但在StartCoroutine 这一步报了NullReferenceException 的错.仔细分析和搜索之后,得到错误原因. ...
- Lua的协程和协程库详解
我们首先介绍一下什么是协程.然后详细介绍一下coroutine库,然后介绍一下协程的简单用法,最后介绍一下协程的复杂用法. 一.协程是什么? (1)线程 首先复习一下多线程.我们都知道线程——Thre ...
- python之协程与IO操作
协程 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B ...
- Python-09-线程、进程、协程、异步IO
0. 什么是线程(thread)? 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆 ...
- python学习道路(day11note)(协程,同步与异步的性能区别,url爬网页,select,RabbitMq)
1.协程 #协程 又称微线程 是一种用户的轻量级线程 程序级别代码控制 就不用加机器 #不同函数 = 不同任务 A函数切到B函数没有进行cpu级别的切换,而是程序级别的切换就是协程 yelied #单 ...
- c语言实现的协程
这几天突然对协程感兴趣,于是自己实现了一个,代码放在github上:https://github.com/adinosaur/Coro 协程是一种用户空间的非抢占式线程,主要用来解决等待大量的IO操作 ...
- [转载]协程-cooperative multitasking
[转载]协程三讲 http://ravenw.com/blog/2011/08/24/coroutine-part-1-defination-and-classification-of-corouti ...
随机推荐
- as3.0划线带撤销功能
package com{ import flash.display.MovieClip; import flash.display.SimpleButton; import flash.events. ...
- linux下访问window的共享文件,在命令行实现方法
1.挂载共享目录 mount -t cifs //192.168.0.1/aa /tmp/export -o username=text,password=test //192.168.0.1/aa ...
- 151. Reverse Words in a String (String)
思路: 本题考查的目的并不是使用字符串的函数.方法是两次reverse,先对每个单词先做一次翻转,然后对整个字符串做一次翻转. 需要注意的是去除extra space,并且对全space字符串.以及最 ...
- React 入门实例教程【转】
Any day will do. 哪一天都行 Are you kidding? 你在开玩笑吧! Congratulations! 祝贺你! I don’t mean it. 我不是故意的. 原文作者: ...
- TZOJ 2725 See you~(二维树状数组单点更新区间查询)
描述 Now I am leaving hust acm. In the past two and half years, I learned so many knowledge about Algo ...
- PTA 7-9 旅游规划(SPFA)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- 超强、超详细Redis入门教程【转】
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...
- sql语句Order by 报错列名不明确
select top 10 column1,column2,column3 from table1 where table1.id not in(select top 0 table1.id from ...
- php使用sftp上传文件
搞这个SFTP文件传输搞了一整天真是醉了,从sftp安装,到php的ssh2扩展安装,最后到php应用ssh2来上传文件:最后就没有最后了 Failure creating remote file: ...
- Java运算符号,对象赋值,别名
生活发生的一切,才会促使着我继续前行,今天继续更新哦,看书中的代码练习. 例子1 引入net.mindview.util.Print.* ,方便打印结果. package com.date0529; ...