你能在UIViewController的背景中添加一个sprite kit粒子发射器吗?



我是精灵套件游戏开发的新手,我想知道是否有可能向UIViewController添加粒子发射器。我想在屏幕上的按钮与粒子发射器一起为一个应用程序的想法,我有这是问题。SKScene没有内置的按钮对象,所以我决定也许添加一个粒子发射器到UIViewController类会更好。是否有可能在背景中制作一个粒子发射器并在其上放置按钮?

你想使用SpriteKit的具体原因是什么?如果你只是想在UIViewController中集成粒子效果,可以使用视图并添加CAEmitterLayer和CAEmitterCell。

不使用任何SpriteKit也能很好地工作,性能也很好。

SpriteKit的优点之一是易于使用UIKit实现:

创建SKScene子类:

//ParticleScene.h
#import <SpriteKit/SpriteKit.h>
@interface ParticleScene : SKScene
@property SKEmitterNode *emitter;
@end

//ParticleScene.m
#import "ParticleScene.h"
@implementation ParticleScene
-(instancetype)initWithSize:(CGSize)size{
    if (self = [super initWithSize:size]) {
        self.backgroundColor = [UIColor clearColor];
        [self addEmitterNode];
    }
    return self;
}
-(void) addEmitterNode{
    SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"SpriteKitParticleEmitter" ofType:@"sks"]];
    emitter.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.size.height);
    [self addChild:emitter];
}
@end

创建SpriteKitParticleEmitter.sks 顶部菜单->文件/新建/文件…/(资源)SpriteKit粒子文件

你可以在这里修改你想要的发射器。

添加发射器到UIViewController你可以添加一个UIView到你的Storyboard,并将它的子类设置为SKView,或者你可以通过编程方式添加SKView:

添加-(void) viewDidLoad方法:

SKView *spriteKitView = self.particleView; // Defined on storyboard
//Use SKView *spriteKitView = [[UIView alloc] initWithFrame:frame] to create it programatically and then [self.view addSubView:view];
spriteKitView.showsFPS = NO;
spriteKitView.showsNodeCount = NO;
spriteKitView.allowsTransparency = YES; //Prevents this view to show as a black square
spriteKitView.backgroundColor = [UIColor clearColor];
SKScene *scene = [JPParticleScene sceneWithSize:view.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[view presentScene:scene];

如果您使用故事板,只需将self.spriteKitView放在UIButtons后面。

最新更新