我在下面的代码中加载了viewDidLoad:
方法中的场景。
SKView *spriteView = (SKView *) self.view;
spriteView.showsDrawCount = YES;
spriteView.showsNodeCount = YES;
spriteView.showsFPS = YES;
PFPiePlanesScene *scene = [PFPiePlanesScene sceneWithSize:self.view.frame.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[spriteView presentScene:scene];
当我在spriteView
上拨打任何内容时,它会收到此消息:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setShowsDrawCount:]: unrecognized selector sent to instance 0x9685030'
我认为这是因为它没有将实例视为SKView而是将其视为UIView。
提前致谢。
额外的一些:
Sprite工具包使用此代码加载场景。
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = NO;
skView.showsNodeCount = NO;
// Create and configure the scene.
self.scene = [SKMyScene sceneWithSize:skView.bounds.size];
self.scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:self.scene];
乔
答案 0 :(得分:7)
如果您正在关注apple的walk-thougrh,则跳过该部分:“打开项目的故事板。它有一个视图控制器(SpriteViewController)。选择视图控制器的视图对象并将其类更改为SKView。
答案 1 :(得分:1)
self.view
是UIView
个对象。简单地投射指针并不会使它成为不同类型的对象。
SKView *spriteView = (SKView *) self.view;
spriteView
现在指向self.view
指向的对象,告诉编译器它实际上指向类型为SKView
的对象。这就是为什么你没有得到任何编译器错误或警告。在运行时,您正在发送spriteView
无法处理的消息,因为它仍然只是UIView
对象。
答案 2 :(得分:1)
不要忘记在链接框架和库下添加SpriteKit.framework。
干杯, 杰西
答案 3 :(得分:1)
你需要做的是从UIView更改视图的子类到该视图下的SKView选择你的viewcontroller并更改它的子类
答案 4 :(得分:0)
@Sebastian不正确。
我猜你跟着苹果的走路了。 也许以下教程会有所帮助:
http://www.raywenderlich.com/49625/sprite-kit-tutorial-space-shooter
答案 5 :(得分:0)
在将UIView转换为SKView之前,您必须确保在故事板中将自定义类设置为SKView。
答案 6 :(得分:0)
如果您注意到第一个视图控制器在头文件中附带了这些导入。
#import <UIKit/UIKit.h>
#import <SpriteKit/SpriteKit.h>
创建新的视图控制器时,默认情况下不包含Spritekit。添加精灵工具包后,它应该与苹果提供的默认代码
一起使用