我有一个游戏,它有许多独特的单位,每个单位都有自己的精灵表(因为每个单位都有几个动画),这意味着在任何给定场景中游戏可能使用十几个精灵表。创建带有单元的场景时,所有这些资产的初始化需要很长时间(几秒钟)。具体来说,在运行此代码时 UI 被锁定:
NSString *unitSheetName = [self getUnitSheetName];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:unitSheetName];
CCSprite *frame = [CCSprite spriteWithSpriteFrameName:kDefaultFrameName];
// etc...
但是,如果我再pop
创建一个场景,然后创建一个新版本的相同场景(和push
它),加载会花费一小部分时间(UI 不会锁定)。因此,UI 锁定似乎是由于精灵表的初始缓存......
我希望我能够通过在游戏启动时调用CCSpriteFrameCache
'addSpriteFramesWithFile
方法来避免这种滞后,但这似乎不起作用。尽管如此,初始加载仍然需要很长时间。
有没有什么好的、有效的方法来预加载资产?我不介意在我的启动加载屏幕上添加一两秒,只要我能确定 UI 稍后在场景被推送时不会被锁定......