Unity中的线程可避免动画冻结

时间:2019-04-13 23:56:45

标签: c# multithreading unity3d thread-safety threadpool

每次我从保存的文件加载纹理时,场景中的任何动画都会冻结,直到从文件加载完成。 我读了很多关于Thread的不同观点,但没有一个得到答案。但是我必须将纹理加载到其他线程中,以避免冻结。 我的代码已附加到一个游戏对象,该对象是一个UI弹出窗口

void Start() {
Texture2D tex = LoadTexFromFile(); //Should be in a diffrent thread that returns a texture
sprite = Sprite.Create(tex, 
                       new Rect(0, 0, tex.width, tex.height), 
                       new Vector2(tex.width / 2, tex.height / 2));

picFrame.GetComponent<Image>().overrideSprite = sprite; }

如何安全地在代码中使用线程?

1 个答案:

答案 0 :(得分:0)

Best practices说,您应该不要在关卡中加载资产,而应该在开始加载资产,以避免干扰。您为什么要反对像Unity这样的中间件?让它为您管理资产,并在关卡开始时加载它们。

有一个用于资产流的用例(不是Unity专用的),但通常用于AAA按需资产加载(例如纹理);啮合;以及大型开放世界游戏中的其他资产,但我怀疑情况是否如此。这样的功能非常复杂,我在这里不再赘述。

告诉我更多

enter image description here