每次我从保存的文件加载纹理时,场景中的任何动画都会冻结,直到从文件加载完成。 我读了很多关于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; }
如何安全地在代码中使用线程?
答案 0 :(得分:0)
Best practices说,您应该不要在关卡中加载资产,而应该在开始加载资产,以避免干扰。您为什么要反对像Unity这样的中间件?让它为您管理资产,并在关卡开始时加载它们。
有一个用于资产流的用例(不是Unity专用的非),但通常用于AAA按需资产加载(例如纹理);啮合;以及大型开放世界游戏中的其他资产,但我怀疑情况是否如此。这样的功能非常复杂,我在这里不再赘述。