Closed Jihuihu closed 4 years ago
这里是HotFixTest.cs的 TestRun方法
[Patch]
public string TestRun()
{
string old = "Old Run";
Debug.Log("debug:"+ old);
return old;
}
这里是 LogicMgr.cs中下载并呼叫TestRun的代码
private void RunFunction()
{
var msg = TestRunGo.TestRun();
Log(msg);
Debug.Log("RunFun End"+msg);
}
这个是一个Log方法,只是把字符串显示到场景中
public void Log(string msg)
{
MsgText.text = MsgText.text + msg + "\n-";
UnityEngine.Debug.Log("Log End:"+msg);
}
这里是 LogicMgr.cs中下载并LoadPatch的代码
IEnumerator DownLoadAndLoadPatch(string patchStr)
{
UnityWebRequest www = UnityWebRequest.Get(patchStr);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Log(www.error);
}
else
{
// Or retrieve results as binary data
byte[] results = www.downloadHandler.data;
Log("loading " + patchStr);
var sw = Stopwatch.StartNew();
PatchManager.Load(new MemoryStream(results));
Log(string.Format("{0}, using {1} msg", patchStr, sw.ElapsedMilliseconds));
}
}
这个问题突然又好了,我没有做别的,只是为了 贴出代码,把方法做了一次重命名 再次测试 竟然通过了
首先很感激作者,能共享又一个优秀的FixBug手段,从XLua到InjectFix,辛苦了
我用InjectFix在自己建立的测试工程中测试:
1.HotFixTest.cs中 一个TestRun方法,只是UnityEngine.Debug.Log一个字符串,并返回这个字符串 2.LogicMgr.cs中 根据按钮点击 呼叫 TestRun方法并接受其返回的字符串,通过一个Text对象LogText来显示到屏幕上.并且Debug.Log字符串的内容; 3.LogicMgr.cs中还有一个按钮是会到Server上拉取对应的HotPatch并通过 PatchManager.Load加载;
测试的结果,Debug.Log中的信息的确热更成功了,但是 Text对的内容却没有更新,而且没有看到任何的错误信息
请作者大大,帮忙分析一下,如果需要我贴一下代码