kihara
swiftuiとspritekitで簡易なゲームを作っています。タイトル画面からゲーム画面への遷移にはpresentSceneを使っており遷移自体はうまくいくのですが、アプリを一度バックグラウンドにするとゲーム中でもタイトル画面に戻ってしまいます。おそらくContentViewで毎回タイトル画面が呼び出されているせいだと思うのですが改善方法が調べてもわからず詰まっています。どなたか解決策をご存じの方はいらっしゃいますか?
このコードだと body
が走る度に scene
が再生成されてしまうので、 @StateObject
の中に scene
を持たせるなどした方が良いと思います。たとえば↓のように(これで問題が解決するかわかりませんが)。 struct ContentView: View { @StateObject private var state: ContentViewState = .init() var body: some View { SpriteView(scene: scene) .frame(width: UIScreen.main.bounds.size.width , height: UIScreen.main.bounds.size.height) .ignoresSafeArea() } }
import Combine final class ContentViewState: ObservableObject { let scene: SKScene init() { self.scene = GameTitleScene() scene.size = CGSize(width: UIScreen.main.bounds.size.width , height: UIScreen.main.bounds.size.height) } }
(edited)