Tag: skview

UIView不会投射到SKView

我一直试图在我的Sprite Kit游戏中实现游戏中心,但每次我尝试呈现排行榜… -(void)showLeaderboard:(UIViewController*)gcvc { GKGameCenterViewController *leaderboardController = [[GKGameCenterViewController alloc] init]; if (leaderboardController != NULL) { leaderboardController.leaderboardIdentifier = @"Game_Leaderboard"; leaderboardController.viewState = GKGameCenterViewControllerStateLeaderboards; leaderboardController.gameCenterDelegate = self; UIViewController *vc = self.view.window.rootViewController; [vc presentViewController: leaderboardController animated: YES completion:nil]; } } 游戏崩溃在启动时出现错误: [UIView setShowsDrawCount:]:无法识别的select器发送到实例0x178169e40(lldb) 我查了一下相关的问题,他们都提出把IB的View类改成SKView类,但是没有运气。 exception断点停在行: SKView *spriteView = (SKView *)self.view; spriteView.showsDrawCount = YES; 该视图显然是SKViewtypes,但仍然表示spriteView是UIViewtypes。 我不确定这是否应该是重要的,因为游戏的主视图控制器是UIViewController的一个子类,这是呈现Game Center排行榜所需要的,所以我不知道如何解决这个错误。

如何正确使用Swift在SpriteKit中切换SKScenes?

我正在开发一个有3个不同的SKScenes(scene1,scene2,scene3)的游戏。 在GameViewController中,我像这样初始化它们: class GameViewController: UIViewController { var hero = Hero() var skView: SKView! var scene1: SKScene! var scene2: SKScene! var scene3: SKScene! override func viewDidLoad() { super.viewDidLoad() // init scenes scene1 = SKScene(size: view.bounds.size, hero: hero) scene2 = SKScene(size: view.bounds.size, hero: hero) scene3 = SKScene(size: view.bounds.size, hero: hero) scene1.scaleMode = .AspectFill scene2.scaleMode = .AspectFill scene3.scaleMode […]

将UITextView添加到SpriteKit中的场景中

我试图创build一个游戏,并遵循苹果的build议,我正在使用多个场景。 你可以认为游戏是一个文本的重点和点击冒险。 这就是问题所在。 大量的文本,做了一些search,似乎是推荐的方式,或者更确切地说,目前唯一的方法是使用UITextView : [self.view addSubview: textView]; 如果您只有一个SKScene ,那么这是非常好的,因为这是当前视图/ SKView所显示的场景。 我的问题是,当我添加文本到我场景的*视图,这不是应用程序加载的第一个场景(它的第三个或更高),应用程序跳回到它加载的第一个场景(这是我的菜单场景),并愉快地显示所需的文字。 有人知道为什么吗? 我有菜单场景过渡到场景一,到场景二(我希望显示testing)。 如果我想要在每个场景中显示一些以上的单词,请不要说每个场景都需要一个视图,这只是没有意义,但是也许不会使用SpriteKit。 我还是有些什么惊呆了,没有UITextView SK等价物。 无论如何,任何帮助,指针会很好,谢谢。 好的,这里是代码的相关部分….我想。 控制器: – (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; // Configure the view. SKView *skView = (SKView *)self.view; skView.showsFPS = YES; skView.showsNodeCount = YES; skView.showsDrawCount = YES; // Create and configure the scene. SKScene *scene = [[GTMainMenu alloc] initWithSize:skView.bounds.size]; […]

closuresSKScene后,内存仍然很高

我使用dispatch_once NSObject来创build数据指针。 所以所有的游戏资产指针都是在主视图控制器出现的时候创build的。 为了玩游戏,用户点击UIViewController上对应于特定级别的UIButton 。 我把它称为LevelSelectionController。 游戏结束后,用户将点击一个标签( SKLabel )。 所有的动作和节点都将被删除。 [self removeAllActions]; [self removeAllChildren]; [self removeFromParent]; 此外,特定级别的SKScene子类将委派用户返回LevelSelectionController给展示游戏SKView的视图控制器的任务如下。 – (void)closeScene { SKView *spriteView = [[SKView alloc] init]; [spriteView presentScene:nil]; [self.navigationController popViewControllerAnimated:YES]; } 我唯一的问题是当用户离开游戏场景(SKScene)时内存仍然很高。 游戏需要大量资产。 所以当游戏开始时,内存使用量将跳到200 MB。 当用户返回到原始级别select视图控制器时,根据活动监视器 ,游戏模拟器仍然消耗200 MB。 当用户input不同的级别时,内存使用量将会跳过另外10 MB。 那么一旦用户离开SKScene,我怎么能释放上一场比赛的内存呢? 我正在使用ARC。 Xcode版本是5.1。 开发目标是iOS 7.1。 感谢您的帮助。 – 编辑1 – 我太愚蠢。 我知道问题是什么 当我closures这个场景时,我正在创build一个新的SKView,然后我将它设置为零来摆脱当前场景。 有用。 但是,这不应该是这样做的方式。 相反,我需要在呈现之前将当前的SKView设置为一个variables。 […]

SKScene和SKView的暂停属性之间的区别

我正在使用下面的代码暂停我的SKScene: self.paused = YES; 然而,根据安德烈·戈尔代夫 ( Andrey Gordeev)的 回答 ,人们也可以用这一行来暂停一个场景: self.view.paused = YES; 我想了解它会使(或两者)暂停场景有什么不同。

iPhone 5s SpriteKit绘图怪异

据我所知,iPhone 5s的像素分辨率为640 x 1136,分辨率为320 x 568(为了与非Retina设备兼容)。 当我使用SpriteKit时,问题/混乱/怪异似乎出现了。 例: 我从左下angular(0,0)到右上angular(宽度,高度)绘制一条线。 结果是这条线几乎中途被吸引了。 而事实上,当我打印出来的屏幕尺寸,它应该是320×568。所以我决定从(0,0)到(宽* 2,高* 2)绘制。 当然,这个打印出640 x 1136。 所以奇怪的是,即使我正在从一个对angular线angular落画angular,但实际上并不是从一个angular落到另一个angular落。 笔记: – I'm getting the width & height values from self.value.frame.size. – The diagonal line seems to draw just fine using any of the iPad simulators. 有什么想法发生在这里?

SpriteKit暂停和恢复SKView

我想暂停和取消暂停SpriteKit中的一个场景,2个button在同一个位置。 场景运行时,我想显示“暂停”button。 场景暂停时,我想隐藏“暂停”button并显示“播放”button。 在SpriteKit中,您可以使用在SpriteKit中定义的self.scene.view.paused。 我的代码: @implementation MyScene { SKSpriteNode *PauseButton; SKSpriteNode *PlayButton; } -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { [self Pause]; } return self; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { /* Called when a touch begins */ UITouch * touch = [touches anyObject]; CGPoint location = [touch locationInNode:self]; SKNode * Node = [self […]

SpriteKit – 如何正确地暂停和恢复应用程序

游戏教程本书的帮助下制作iPhone的最新游戏有很大的问题。 注意:从SpriteKit的方法 – 多任务的正确方法不起作用。 所以,在我的ViewController.m文件中,我正在定义私有variablesSKView * _skView。 然后,我做这样的事情: – (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; if(!_skView) { _skView = [[SKView alloc] initWithFrame:self.view.bounds]; _skView.showsFPS = NO; _skView.showsNodeCount = NO; // Create and configure the scene. SKScene * scene = [MainMenuScene sceneWithSize:_skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; // Present the scene. [_skView presentScene:scene]; [self.view addSubview:_skView]; } } 我有我的_skView定义,一切正常。 但是,当我中断游戏时,它会将其状态重置为初始状态,例如,如果我正在玩游戏,有人打电话给我,则游戏切换回主菜单。 不能这样。 基于我上面提到的网站,我创build了这个: […]

如何解散SKScene?

当我完成我的SKScene是否有一种方法来解散我的SKScene类SKScene? 如果没有在我的ViewController中显示我的SKScene [skView presentScene:theScene]; 有没有办法重新启动现场或删除从我的SKView? SKScene类参考和SKView类参考没有帮助。 更新: 下面的代码从我的SKView中删除我的场景[yourSKView presentScene:nil]; 但是当我回到我的视图控制器时,场景仍然在后台运行。 当游戏结束时,我总是可以暂停它,然后我回到我的视图控制器(菜单),但我想知道是否有另一种方法,然后像彻底删除它一样暂停它? -(void)endTheGame { [highscoreLabel removeFromSuperview]; NSLog(@"Game Over"); //would like to end here before calling the below method in my view controller [self.delegate mySceneDidFinish:self]; }