我是精灵套件游戏开发的新手,我想知道是否有可能向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
后面。