【发布时间】:2018-07-13 08:36:18
【问题描述】:
我有一个从网络获取一些数据的自定义类。
当我得到这个数据时,我想将它设置为一个属性的值,但是当我这样做时,统一崩溃了。注释行会在没有此行的情况下生成崩溃,一切正常。请参阅下面的代码:
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class GetDB
{
private readonly Main m;
private readonly string Url;
public string DBData {
get
{
if(DBData == null)
return null;
else
return DBData;
}
private set
{
DBData = value;
}
}
public GetDB(Main m, string url)
{
this.m = m;
this.Url = url;
}
public void GetServerData(){
m.StartCoroutine(GetText(Url, (result) =>{
this.DBData = result; //THIS LINE CRASHES UNITY
Debug.Log(result);
}));
}
IEnumerator GetText(string url, Action<string> result) {
UnityWebRequest www = UnityWebRequest.Get(url);
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
if (result != null)
result(www.downloadHandler.text);
}
}
}
我将如何解决这个问题,这里到底发生了什么?
如果有任何不清楚的地方,请告诉我,以便我澄清。
【问题讨论】:
-
DBData = value;那是你的问题。您必须使用支持字段。 -
我对 c# 很陌生,那么究竟什么是支持字段?
标签: c# unity3d properties coroutine