質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SpriteKit

SpriteKitは、iOSやOS Xで使用できるApple社製の2Dゲーム開発フレームワークです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1611閲覧

SpriteKitを使ってタイトル画面は別のUIViewControllerを使いたいが落ちてしまう

hodoru3sei

総合スコア284

SpriteKit

SpriteKitは、iOSやOS Xで使用できるApple社製の2Dゲーム開発フレームワークです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/03/17 08:06

編集2019/03/18 14:10

SpriteKitでゲームを作りたいと思っています。タイトル画面は使い慣れたUIViewControllerを使って作りたいなと思い、初期起動画面を変更してそこからSKSceneを開いているViewController(Gameを選んだ時に自動生成されるもの)に遷移しようとしたところキャストが失敗してしまいクラッシュしてしまいます。

error

12019-03-17 17:00:19.200995+0900 TransitionSKViewTest[6991:1310586] [DYMTLInitPlatform] platform initialization successful 2Could not cast value of type 'UIView' (0x1bec41a18) to 'SKView' (0x1bd33cec0). 32019-03-17 17:00:19.389881+0900 TransitionSKViewTest[6991:1310511] Could not cast value of type 'UIView' (0x1bec41a18) to 'SKView' (0x1bd33cec0).

この部分のキャストに失敗しておちてしまっているようです。
どうすれば落ちずにGameSceneを開くことができるのでしょうか?

Swift

1if let view = self.view as! SKView? {

TitleViewControllerは下記のようなコードになっています。

Swift

1override func viewDidLoad() { 2 super.viewDidLoad() 3 var vc = GameViewController() 4 self.present(vc, animated: true, completion: nil) 5 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2019/03/19 06:06

> TitleViewControllerは下記のようなコードになっています。 これは何がしたいのでしょう?
takabosoft

2019/03/19 06:08

タイトル画面を出して、何かボタン(スタートボタンなど)を押したらゲーム画面へ遷移したいのではないのですか??
hodoru3sei

2019/03/19 10:54

そうです! 本来はUIViewのパーツを使ってタイトル画面を作り、ボタンを押したらGameSceneに遷移するみたいな流れにしたいと考えています UIで画面を作ってダメだったので、新ツンする際はシンプルな構造にした方がわかりやすいかと思い画面遷移だけにしてしまいました。 混乱させてしまいすみません
guest

回答1

0

タイトル用のViewControllerからゲーム用のViewControllerに遷移するには
StoryboardならSegue、
コードで実現するのでしたら、UIWindowのrootViewControllerを差し替えるなどしてください。

あと、本題とは関係ありませんが、

if let view = self.view as! SKView? {

はオプショナルのアンラップの方法としては間違っています。
正しくは

if let view = self.view as? SKView {

です。

投稿2019/03/18 01:36

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hodoru3sei

2019/03/18 03:29

遷移はrootViewControllerの書き換えで行っていました。 デフォルトで作成されたアンラップのコードだったのであってると思っていたのですが間違っていたんですね!気づきませんでした。 アンラップの方法を修正して遷移できるか試してみます
hodoru3sei

2019/03/18 14:09

ためしてみたのです、if let で弾かれてしまいGameSceneに遷移できませんでした
takabosoft

2019/03/19 02:52

でしょうね、根本はそこじゃないです。GameSceneに遷移するというのは、つまりそのViewControllerにまた差し替えないとダメでしょう。
hodoru3sei

2019/03/19 05:36

えっと...つまりどういうことですか? TitleViewController -> ViewControllerに遷移することはできないということですか?
takabosoft

2019/03/19 06:07 編集

(一旦取り消します)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問