昨天琢磨着搞一个2D精灵换装的功能,对应皮肤的材质总要加载到内存里,一开始直接load(xxx),然后每次换装都要卡一下。计时看一下,load居然花了300+ms,三个重叠的精灵就要卡1秒左右,实在不能接受。
不知道有没有什么异步的API可以优雅的读取资源,就像Unity一样?
网上逛了一下,感觉都是基于线程,要写一堆额外的代码。我用的godot4.0,有一个ResourceLoader的新API,先不说这个API设计的很奇怪,很有C++的风范(GitHub也有人吐槽这个),用这个API虽然读取资源不会卡了,但是换装的时候会有一瞬间白色材质,也不知道是什么原因。行为像是材质一开始是空,在一个短暂间隔后才显示。看了看实现的源码,逻辑也很简单,应该不至于出现问题才对。
另外,godot4的await感觉也很奇怪,说是等待一个信号,但有时候有反应有时候没反应。