Ответ 1
Я боюсь, вам придется либо представить свою сцену с самой базовой настройкой (например, установкой backgroundColor), а затем загрузить остальную часть или представить сцену загрузки до загрузки сцены геймплея, а затем заменить ее.
У меня проблема, когда мой цвет фона SKView (серый) на короткое время отображается до того, как будет представлена сцена.
Я вручную попытался установить его, как через редактор Storyboard, так и в мой контроллер (self.skView.backgroundColor = [SKColor blueColor]
), но он остается серым. Это не атрибут, который можно переопределить?
Обновление # 1
Вот небольшое объяснение того, что происходит:
viewDidLoad
вызывается и skView
отображается на экране с серым фоном (skView.scene
еще не установлен).ViewController
- (void)viewDidLoad
{
[self.activityIndicator startAnimating];
[self authenticatePlayer];
self.skView.backgroundColor = [SKColor blueColor];
// During this time the grey screen is visible as the assets are being loaded and take ~1 second
// self.skView.scene is NULL here so I cannot set the backgroundColor...
[GamePlayScene loadSceneAssetsWithCompletionHandler:^{
[self.activityIndicator stopAnimating];
self.activityIndicator.hidden = YES;
CGSize viewSize = self.skView.bounds.size;
self.gamePlayScene = [[GamePlayScene alloc] initWithSize:viewSize];
self.adView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[self.skView presentScene:self.gamePlayScene];
}];
...
Я боюсь, вам придется либо представить свою сцену с самой базовой настройкой (например, установкой backgroundColor), а затем загрузить остальную часть или представить сцену загрузки до загрузки сцены геймплея, а затем заменить ее.
Я думаю, вы ошибаетесь в отношении свойства SKScene с таким же именем:
self.scene.backgroundColor = [SKColor blueColor];
Обратите внимание, что self.scene
(также self.view
) будет равно nil до тех пор, пока node не будет добавлен как дочерний элемент в другой node (который уже является частью графика сцены) соответственно до тех пор, пока сцена не будет представлена.
Вы должны иметь возможность установить цвет фона SkView
в контроллерах представления представления viewDidLoad
- перед представлением представления. Разве это не происходит?
Если вы добавили его в родительский node
Используя базовый шаблон для комплекта спрайтов, я смог установить фон в черный цвет с помощью этого кода внутри файла GameViewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = YES;
// Create and configure the scene.
GameScene *scene = [GameScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
scene.backgroundColor = [UIColor blackColor];
// Present the scene.
[skView presentScene:scene];
}
Не уверен, что это именно то, что вы искали, но оно избавилось от серого фона, который, похоже, не исчез. В вашем случае, я думаю, вы захотите установить свойство цвета фона "gamePlayScene" после инициализации сцены.
Надеюсь, это поможет!