如题,在写酷跑游戏,地图是tilemap做的,开始加载2张,然后逐渐加,当每当我创建地图是就卡一下,我改怎么解决。
如果我一下在loading 界面把几十张地图都创建好就不会卡,但londing界面的加载的那个动画又卡住了,又试了一下在loading界面开个多线程创建tilemap 又报错,是不是不能在子线程不能创建tilemap的???
请问大牛们,大神们,有遇到过吗?要如何解决???
如题,在写酷跑游戏,地图是tilemap做的,开始加载2张,然后逐渐加,当每当我创建地图是就卡一下,我改怎么解决。
如果我一下在loading 界面把几十张地图都创建好就不会卡,但londing界面的加载的那个动画又卡住了,又试了一下在loading界面开个多线程创建tilemap 又报错,是不是不能在子线程不能创建tilemap的???
请问大牛们,大神们,有遇到过吗?要如何解决???
是的,创建图片不能再子线程调用
创建地图的时候是需要解析地图文件然后构建tilemap对象的,所以肯定会有点时差,所以每次在构建地图的时候,可以用精度条来提示
哦,那有没有什么好的解决办法
进度条啊,那类似的酷跑加载的时候,有个小人动画边跑边加载是怎么解决的,我在loading界面加载全部地图放数组解决了游戏玩的卡顿,但loading界面的的小人动画卡了。
简单点的做法就是加进度条,卡就卡去吧
比较复杂的搞法就是,在主菜单把地图加载好
这个方法需要自己写tilemap的读取,把一次性读取分成多次
loading界面的加载 一般都是异步加载。你在loading中如果不开线程进行加载的话。用Texture的异步加载图片好了。大部分卡顿都是由图片缓存造成。如果你的不是,那只能自行去查找卡顿的函数,再响应处理了。
目前cocos2d-x只对纹理进行了异步加载处理, 文件之类的没做处理
这个问题本身tilemap的问题,想改进只能修改代码或者重新写一个,把地图的读取工作分为图片读取,这个有自带的异步读取函数,文件读取:需要自己写一个异步读取地图配置文件的功能,当然即使这些完成了,在对地图铺上地砖的时候仍然有可能会卡主,而且这个过程无法使用异步(其实可以另开线程处理,但是风险较大,最好还是主线程加载),可以考虑逐帧加载进地图
好像只能逐帧加载加载了,这样加载界面的人还能跑,就是卡一点