rya*_*zec 0 c# multithreading unity-game-engine
所以我试图使用线程在后台保存文件,以防止主统一线程冻结,直到文件被保存:
public void SaveMap() {
MapRendererBehaviour mapRendererBehaviour = GameObject.FindWithTag("MapRenderer").GetComponent<MapRendererBehaviour>();
SerializedMap serializedMap = mapRendererBehaviour.ToSerializedData();
Debug.Log("test");
_saveMapThread = new Thread(() => {
string saveMapJson = JsonConvert.SerializeObject(serializedMap);
File.WriteAllText(_saveMapFilePath, saveMapJson);
});
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,线程代码似乎没有执行,因为文件没有被保存.如果我注释掉线程创建并将线程的主体留在那里,文件将正确保存.
任何人都知道我在这里做错了什么(我假设我做了一些愚蠢的事情,因为我之前从未尝试过使用过线程).
这可能是在黑暗中拍摄但如果你使用命名线程而不是任务,你通常必须在之后说ThreadName.Start(),例如在声明线程之后说:
_saveMapThread.Start();
Run Code Online (Sandbox Code Playgroud)