【发布时间】:2015-07-09 04:35:52
【问题描述】:
我正在编写一个 OS X SpriteKit 应用程序。我正在从主菜单场景过渡到主场景,但过渡大约需要 3 秒才能开始。在我的主要场景中,我有一个以编程方式生成的屏幕钢琴。大约有 55 个精灵需要加载。有什么办法可以加快速度吗?
在我的主要 SKScene LevelScene 中,这是 didMoveToView 方法所调用的:
-(void)didMoveToView:(SKView *)view {
_piano = [[Keyboard alloc] init]; //creates on screen piano keyboard
[self addChild:_piano];
[_piano setPosition:[[self childNodeWithName:@"piano"] position]];
[_piano setAnchorPoint:CGPointMake(1, 0)];
_midiController = [[MIDIController alloc] initWithAudio:YES];
[self initGameStateMachine];
[self initLevel]; //this involves loading a couple more sprites onto the screen
}
【问题讨论】:
-
显示一些代码?加载 55 个精灵应该几乎是瞬时的,精灵的图像纹理有多大?
-
所有正在加载的对象都在几个不同的类中,所以这里要发布很多代码。一半精灵的图像纹理为 110x478 像素。另一个精灵比那个小。我会将我的
didMoveToView方法放在最上面,因为这是创建所有内容的地方。 -
如果没有详细的代码知识,很难提出任何合理的建议。如果您在游戏开始之前绝对需要加载所有内容,请添加“加载”消息。如果您不需要预先加载所有内容,请仅加载游戏前几秒钟所需的内容,然后将其余内容放在后台。
-
我同意这种做法。如果我使用这种加载资源的方法,我是不是只使用 GCD 将所有其他场景资源加载到单独的线程上,并将主菜单资源加载到主线程上?也许我离基地很远,但我想我记得以前看过这样的代码。此外,我刚刚意识到,每次我为每个场景调用
didMoveToView时,它都会重新加载我认为的所有资源。出于某种原因,它只是第一次加载 SKScene 时速度很慢。
标签: macos sprite-kit sktransition