我开始因为提出这么多问题并且无法回答任何问题而感到难过,但只要我找到一些我能做到的,我就会这样做!忏悔......
我有一个gameLoop可以运行我正在制作的游戏中的所有内容,并且在菜单中然后在游戏中一切正常,但是当我退出游戏然后重新加载菜单屏幕时,屏幕会闪烁。
这是我的游戏循环,我希望它能提供一些见解。
//A game loop that is triggered by a timer with intervals of 1/60 seconds
- (void)gameLoop
{
// we use our own autorelease pool so that we can control when garbage gets collected
NSAutoreleasePool * apool = [[NSAutoreleasePool alloc] init];
thisFrameStartTime = [levelStartDate timeIntervalSinceNow];
deltaTime = lastFrameStartTime - thisFrameStartTime;
lastFrameStartTime = thisFrameStartTime;
// add any queued scene objects
if ([objectsToAdd count] > 0)
{
[sceneObjects addObjectsFromArray:objectsToAdd];
[objectsToAdd removeAllObjects];
}
// update our model
[self updateModel];
// send our objects to the renderer
[self renderScene];
// remove any objects that need removal
if ([objectsToRemove count] > 0)
{
[sceneObjects removeObjectsInArray:objectsToRemove];
[objectsToRemove removeAllObjects];
}
[apool release];
if (needToLoadScene)
{
[sceneObjects removeAllObjects];
[self loadScene];
}
if (needToEndScene)
{
[sceneObjects removeAllObjects];
[self stopAnimation];
//We'll need to add unloading sounds later on
[inputController endScene];
[self renderScene];
needToEndScene = NO;
}
}
我应该添加的另一件事是视图由类MusicAndViewController
控制,我将其用作视图,然后添加后续视图。菜单和游戏视图实际上是相同的openGL视图,但我在切换到另一个视图之前呈现一个干净的视图
答案 0 :(得分:0)
任何与我有过类似问题的人都是这样的。
设置定时器时,我必须覆盖设置器,使其无效,然后设置定时器。在我的gameScene上我没有这样做,所以当我使计时器= nil它继续发射(因为它在设置为nil之前没有失效,并且仍在运行)然后在下一个加载的场景上引起闪烁(菜单)