8

シンプルなスプライト キットのセットアップをセットアップしようとしています。私がしているのは、「空のアプリケーション」からデフォルトの xCode テンプレート「スプライト キット ゲーム」を再作成することだけです。

skView.showsFPS = YES;でクラッシュし続けます。ライン。説明できない。あなたはできる?ありがとう!

いくつかのコード:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
{
  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  MenuController *menuController = [[MenuController alloc] init];
  self.window.rootViewController = menuController;
  [self.window makeKeyAndVisible];
  return YES;
}

MenuController.m

- (void)viewDidLoad
{
  [super viewDidLoad];

  SKView *skView = (SKView *)self.view;
  skView.showsFPS = YES;
  skView.showsNodeCount = YES;

  MultiplayerView *gameView = [MultiplayerView sceneWithSize:skView.bounds.size];
  gameView.scaleMode = SKSceneScaleModeAspectFill;

  [skView presentScene:gameView];
}

これを起動すると、次のエラーが発生します。

2013-11-10 13:08:01.605 ByS[9419:70b] -[UIView setShowsFPS:]: unrecognized selector sent to instance 0x10c00bc60
2013-11-10 13:08:01.608 ByS[9419:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setShowsFPS:]: unrecognized selector sent to instance 0x10c00bc60'
4

4 に答える 4

5

通常の SpriteKit テンプレートと比較して、単一ビューまたは空のアプリケーションから開始するときに同じ問題が発生しました。loadView メソッドを上書きすることがわかったコードを追加すると、私のものは機能しました。View Controller の viewDidLoad のすぐ上に配置してみてください。

- (void)loadView {
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
    SKView *skView = [[SKView alloc] initWithFrame:applicationFrame];
    self.view = skView;
}

.h ファイルは通常の UIViewController です。そして、フレームワークをリンクした後に #import することを忘れないでください!:

@interface CharacterViewController : UIViewController

したがって、完全な .m コードは次のようになります。

@implementation CharacterViewController

- (void)loadView {
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
    SKView *skView = [[SKView alloc] initWithFrame:applicationFrame];
    self.view = skView;
}


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"CharacterViewController viewDidLoad");
    // Do any additional setup after loading the view.

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;


    // Create and configure the scene.
    CharacterScene *character = [[CharacterScene alloc]initWithSize:CGSizeMake(skView.bounds.size.width, skView.bounds.size.height)];

    character.backgroundColor = [UIColor blueColor];

    [skView presentScene:character];

}
于 2014-08-14T15:04:41.553 に答える
0

MenuController.m で、初期化を置き換えます

SKView *skView = (SKView *) self.view;

SKView *skView = [[SKView alloc initWithFrame : self.view.frame];
  • self.view の参照オブジェクトを割り当てるのではなく、self.view のフレームを指定して SKView のオブジェクトを初期化するだけです。
于 2017-12-21T11:27:49.390 に答える