1、string.Replace方法返回替换后的字符串,所以使用的时候要用:
string str = "";
str = str.Replace("old", "new");
否则得不到期待的结果。
2、看下面的代码:
PlotWnd.Instance.InitPlotTalkData(int.Parse(NewBattleSelectWnd.battleID), 3, 10);
PlotWnd.Instance.UpdateTalkInformation();
<pre name="code" class="csharp">PlotWnd.Instance.SetProcessOtherThingWhenClosedHander(EnterBattleAfterPlotTalk);
GameData.mPlotTalkNodeList.Add(3);
LevelHelper.LevelPause(true);
return;
PlotWnd是一个单例,但是在
<pre name="code" class="csharp">PlotWnd.Instance.UpdateTalkInformation();
函数里,有销毁该单例的逻辑代码,然后如果正好满足销毁条件,后面就悲剧了,正确的写法应该是:
PlotWnd.Instance.InitPlotTalkData(int.Parse(NewBattleSelectWnd.battleID), 3, 10);
PlotWnd.Instance.UpdateTalkInformation();
if(PlotWnd.Exist)
{
PlotWnd.Instance.SetProcessOtherThingWhenClosedHander(EnterBattleAfterPlotTalk);
GameData.mPlotTalkNodeList.Add(3);
LevelHelper.LevelPause(true);
return;
}
当然,尽量不要在UpdateTalkInformation()函数里处理销毁逻辑,或者将有销毁逻辑的代码放到最后一个调用,但是有谁能保证呢?