SpriteKit View,TextView(UIKit)使用した作成例

SpriteKitとUIKitとの連携を試した応用例

SpriteKitとiOSとの組み合わせをしたくセミナーに参加し教えていただいたことに基づきSpriteKitのページにViewとTextViewを配置した応用例を作成し確認してみました。これでSpriteKit機能を様々な分野に有効に使えると思います

Main.storyboardの構成

TopページにSpriteKitのViewを配置し動画さしUIKitのTextView、Goボタンを配置。(View Controller)

SecondページにはUIKitのTextView、Backボタンを配置(Second View Controller)

GoボタンからSecondViewController(本文)にSegueで紐ずけをしています。



Objective-C言語
ViewController.hを次のように変更してみてください。

#import <UIKit/UIKit.h>

#import <SpriteKit/SpriteKit.h>


@interface ViewController : UIViewController


@end



ViewController.mを次のように変更してみてください。

 

@propertyで動画を表示するViewをSKView view01にIBOutlet(インスタンス定義)しています。

SKView Self.view01を基にSKSceneを作成しシーンをオープンしています。


#import "ViewController.h"

#import "MyScene.h"


@interface ViewController()


// View01

@property (weak, nonatomic) IBOutlet SKView *view01;


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];


    // ビュー(SKView)の設定 view01

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

    skView.showsFPS = YES;

    skView.showsNodeCount = YES;

    skView.showsPhysics = YES;

    

    // シーンの作成、設定

    SKScene * scene = [MyScene sceneWithSize:

                       skView.bounds.size];

    

    

    // アスペクト比を維持して表示

    scene.scaleMode = SKSceneScaleModeAspectFill;

    

    // シーンのオープン

    [skView presentScene:scene];

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.

}


// 次の画面ボタンアクション

- (IBAction)nextButton{

    

    // Segueの呼び出し

    [self performSegueWithIdentifier:@"goSecondViewSegue" sender:self];

}


// Segue画面遷移

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

    // Segueの特定

    if ( [[segue identifier] isEqualToString:@"goSecondViewSegue"] ) {

        //SecondViewController *secondViewController = [segue destinationViewController];

        //ここで遷移先ビューのクラスの変数receiveStringに値を渡している

        //secondViewController.receiveString = sendString;

    }

}


// バックExit

- (IBAction)mainViewReturnActionForSegue:(UIStoryboardSegue *)segue

{

    

}


 

@end


MyScene.hを次のように変更してみてください。

#import <SpriteKit/SpriteKit.h>


@interface MyScene : SKScene


@end


 

MyScene.mを次のように変更してみてください。

#import "MyScene.h"


@implementation MyScene


#pragma mark - initWithSize

// イニシャライザ

-(id)initWithSize:(CGSize)size {    

    if (self = [super initWithSize:size]) {

        /* Setup your scene here */

        

        self.backgroundColor = [SKColor colorWithRed:0.15

                                               green:0.15

                                                blue:0.3

                                               alpha:1.0];

        // ノードの追加(ラベル)

        {

            // 山小屋画像生成

            SKSpriteNode* iv;

            iv = [SKSpriteNode spriteNodeWithImageNamed:@"images.png"];

            //iv = [SKSpriteNode spriteNodeWithImageNamed:@"koyo.png"];

            // 下からの(0,0)桜画像のセンターを指定 山小屋表示位置

            iv.position = CGPointMake(160, 90);

            // 山小屋表示

            [self addChild:iv];

            

        }

        

        // 雪を降らす ノードの追加(エミッター)放射する

        {

            // パーティクルの参照

            NSBundle *bnd = [NSBundle mainBundle];

            NSString *pth = [bnd pathForResource:@"ParticleSnow" ofType:@"sks"];

            

            SKEmitterNode *nod = [NSKeyedUnarchiver unarchiveObjectWithFile:pth];

            

            nod.position = CGPointMake(CGRectGetMidX(self.frame),

                                       CGRectGetMaxY(self.frame));

            [self addChild:nod];

        }

    }

    return self;

}


// FPS(Frame Per Second)毎に実行

-(void)update:(CFTimeInterval)currentTime {

    /* Called before each frame is rendered */

}


@end


SecondViewController.hを次のように変更してみてください。

#import <UIKit/UIKit.h>


@interface SecondViewController : UIViewController



@end


SecondViewController.mを次のように変更してみてください。

#import "SecondViewController.h"

#import "ViewController.h"


@interface SecondViewController ()


@end


@implementation SecondViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    NSLog(@"セカンドページ");

    

    // Do any additional setup after loading the view.

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



/*

#pragma mark - Navigation


// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/


@end

 

GitHub SpriteKit01

 

簡単な書籍紹介アプリ

TopページでViewにSpriteKitの動画を嵌め込みTextView書籍紹介文を置きSecondページはiOSのViewControllerで書籍本文のTextViewを表示しています。


「本文」ボタンを押すと本文ページへ画面遷移します。「戻る」ボタンを押すとSpriteKitのTopページに戻ります。


 

▫️参考にしたページ


  

目 次