此代码有错误
对象引用未设置为对象的实例
IEnumerator WinLog_big_road(){
string[] historyValue = new string[] { };
NetworkManager.Instance.WebSocketServer.OnCallBack_SC_WEBSOCKET_GametableHistory += CallBack_CS_WEBSOCKET_GametableHistory;
historyValue = PlayInfo.Instance.HistoryValue;
foreach (var previousValue in historyValue)
{
if (previousValue.Contains(playerwinnopairboth))
{
o.GetComponent<UISprite>().spriteName = "layout_player_bigline-01";
NGUITools.SetActive(o, true);
}
}
}
private void CallBack_CS_WEBSOCKET_GametableHistory(bool success, Int32 gametable_no, Int32 year, Int32 month, Int32 day, Int32 shoe_no, gametable_history_list list)
{
string[] newString = new string[4];
string[] newChars = new string[4];
if (gametable_no == 1)
{
for (int i = 0; i < PlayInfo.Instance.gametable_history_list.Count; i++)
{
newString[0] += PlayInfo.Instance.gametable_history_list[i].r;
newString[0] += ",";
}
newChars[0] = newString[0].Split(',').ToString();
}
//upto gametable 4
PlayInfo.Instance.History = newChars;
}
在我的PlayInfo.Instance.History
这里看起来像是什么
private string[] historyvalue;
public string[] HistoryValue
{
get { return historyvalue; }
set { historyvalue = value; }
}
我尝试使用我的扩展方法
检查我的数组是否为null public static bool IsNullOrEmpty(Array array)
{
return (array == null || array.Length == 0);
}
所以我尝试了PlayInfo.Instance.History
,如果它是null
,但它不是空的。然后还尝试了我的historyValue
,但它不是null
。
现在它指向我foreach(var previousValue in HistoryValue)
我的previousValue
为空。
我通过Debugging if(previousValue == null)
证明了这一点,是的,它是一个null。
有人可以解释为什么它是空的。我没有得到PlayInfo.Instance.HistoryValue
的值,然后将其传递给historyValue
。
答案 0 :(得分:1)
我在您提供的代码中的任何位置都没有看到“tzPlayInfo”。但是,如果PlayInfo.Instance.History在设置historyValue之前有任何空值,则previousValue可能为null。从提供的代码我看不到PlayInfo.Instance.History将被填充的位置。
我想知道这条线的作用是否存在一些混淆。
NetworkManager.Instance.WebSocketServer.OnCallBack_SC_WEBSOCKET_GametableHistory += CallBack_CS_WEBSOCKET_GametableHistory;
这是将CallBack_CS_WEBSOCKET_GametableHistory添加为事件处理程序,但不调用该函数来执行。
答案 1 :(得分:1)
不是在IEnumerator
函数上执行此操作,而是在CallBack_CS_WEBSOCKET_GametableHistory
函数
IEnumerator WinLog_big_road(){
NetworkManager.Instance.WebSocketServer.OnCallBack_SC_WEBSOCKET_GametableHistory += CallBack_CS_WEBSOCKET_GametableHistory;
}
然后在我的CallBack_CS_WEBSOCKET_GametableHistory
函数
private void CallBack_CS_WEBSOCKET_GametableHistory(bool success, Int32 gametable_no, Int32 year, Int32 month, Int32 day, Int32 shoe_no, gametable_history_list list)
{
string[] newString = new string[4];
if (gametable_no == 1)
{
for (int i = 0; i < PlayInfo.Instance.gametable_history_list.Count; i++)
{
newString[0] += PlayInfo.Instance.gametable_history_list[i].r;
newString[0] += ",";
}
string[] newChars = newString[0].Split(',').ToString();
DeleteChildrens(pos_big_road[0]);
foreach (string previousValue in newChars)
{
GameObject o = Instantiate(prefab_big_road[0]) as GameObject;
o.transform.SetParent(pos_big_road[0]);
o.transform.localScale = Vector3.one;
o.transform.localPosition = new Vector3(2.0f, -5.0f, 0f);
}
}
}
谢谢你们。