SpriteKitの提示されたシーンを使用してObservedObject Sksceneを最新の状態に保つ方法は? -- ios フィールド と swift フィールド と sprite-kit フィールド と swiftui フィールド と skscene フィールド 関連 問題

How to keep ObservedObject SKScene up to date with SpriteKit's presented Scene?












1
vote

問題

日本語

今私はSpritekitゲームで私のUIとして使用するようにSwiftuiを設定しています。私のゲームが起動してうまく機能するように設定しました。私のUIビューはこのように設定されています

<事前> <コード> struct GameView: View{ @ObservedObject var scene: GameScene var body: some View{ ZStack{ SpriteView(scene: scene) .edgesIgnoringSafeArea(.all) //UI VStack{ HStack{ Spacer() Text("(scene.name!)").foregroundColor(.red) Button(action: { scene.goBack() }, label: { Text("Return") }) Button(action: { scene.tryEnter() }, label: { Text("Enter") }) } Spacer() }.padding() .edgesIgnoringSafeArea(.trailing) } } }

GoBack()で戻ることができるようにするにはどうすればいいですか?問題は、私のObservedObjectシーンがまだ私のOriginSceneに設定されており、ATMが提示されていないためにビューをNILとして返します。

<事前> <コード> func goBack(){ guard map.originScene != nil else { return } if let scene = SKScene(fileNamed: map.originScene!.name!) { // Set the scale mode to scale to fit the window scene.scaleMode = .aspectFill let transition:SKTransition = SKTransition.fade(withDuration: 1) view!.presentScene(scene, transition: transition) } }
英語

Right now I am setting up SwiftUI to use as my UI in SpriteKit game. I have it set up so my game launches and works fine. My UI view is set up like this

struct GameView: View{     @ObservedObject var scene: GameScene     var body: some View{         ZStack{             SpriteView(scene: scene)                 .edgesIgnoringSafeArea(.all)                          //UI             VStack{                 HStack{                     Spacer()                     Text("(scene.name!)").foregroundColor(.red)                     Button(action: {                         scene.goBack()                     }, label: {                         Text("Return")                     })                     Button(action: {                         scene.tryEnter()                     }, label: {                         Text("Enter")                     })                 }                 Spacer()             }.padding()             .edgesIgnoringSafeArea(.trailing)         }     } } 

How do I make it so I can go back with goBack()? Problem is, that my ObservedObject scene is still set to my OriginScene and returns View as NIL, because it is not presented atm.

func goBack(){     guard map.originScene != nil else { return }     if let scene = SKScene(fileNamed: map.originScene!.name!) {         // Set the scale mode to scale to fit the window         scene.scaleMode = .aspectFill         let transition:SKTransition = SKTransition.fade(withDuration: 1)         view!.presentScene(scene, transition: transition)     } } 
</div
              

回答リスト


関連する質問

1  ArkitとSpriteKit:Sksceneを削除する方法  ( Arkit and spritekit how to remove the skscene ) 
My AR機能は私のアプリの中心的な機能ではありません、ユーザーは ARSKView で SKScene を持つviewControllerにオプションでナビゲートすることができます。 > ARsession ユーザーがそのViewControllerから...

0  他の逆のファイルからスプライトを追加する方法  ( How to add a sprite from another swift file ) 
私はしばらくの間仕事をしてきたプロジェクトを持っています。私はSprite-Kitを使っていますが、Gamescene.swiftファイルとは異なるSwiftファイルから子ノードを追加できるようになりたいです。 ゲーマーセンをロードするビューコントローラからの...

1  SceneKit:タップ位置のz値?  ( Scenekit z value of tap location ) 
私は私のプロジェクトでSceneKitを使っていて、ユーザーが人体の3Dモデルにタップする場所に赤い球(マーカーとして)を追加したい(下の図を参照)。私が現在持っているコードでは、球は正しい位置に追加されます - しかし、それは人体の上に追加されませんが、カメ...

1  UICollectionViewCellにSKSCeneを追加すると、スクロール性能が低下します  ( Adding skscene to a uicollectionviewcell lowers scrolling performance ) 
私はUICollectionCellに簡単なアニメーションでSKSCENEを追加しようとしています。 コレクションビューセルの.xibファイルにSkViewセットアップを持っています。 実行してスクロールした場合は、予想通りに機能します。しかし、それらの種...

0  IADがビューのサイズ変更を防ぐには、SKSCENEからIADをオン/オフにする方法をどのようにオン/オフにしますか。  ( How do prevent iads from resizing my view and how do i turn iads on off from an ) 
を設定すると、My ViewControllerの場合 <事前> <コード> self.canDisplayBannerAds = YES; バナー広告は、SKSCENEをサイズ変更して画面の下部に表示されます。これにより、物事が移動して表示され、表示さ...

0  サブクラスからSpriteKitシーンをロードします  ( Load spritekit scene from a subclass ) 
私はSKSCENEのサブクラスを持っています。ここで、 .sks ファイルからシーンをロードします。 super.init(fileNamed: String) の代わりに super.init(fileNamed: String) の代わりに super....

0  Xcodeでシーンサイズのサイズを変更する方法  ( How to resize a scene size in xcode ) 
私のシーンのサイズをオートスケールしたいのですが、シーンサイズのみの数のiPhoneモデル(iPhone 4S、iPhone SE、iPhone 6S、iPhone 6 Plus)を選択できます。だから私はすべてのモデルを自動的にサポートするようにオートスケー...

1  LabelNodeを使用したSprite-Kit(Swift)のシーンを切り替える  ( Switch between scenes in sprite kit swift using labelnode ) 
<コード> {color{red}5 をボタンとして、メニューヘルパー内の {color{red}6 をタッチを検出するための g16 を使用します。印刷作品(検出も検出)がありますが、ゲームシーンに適切に切り替えるにはどうすればいいですか? <事前> <コ...

12  SpriteKitの作成ボタン:Swift  ( Create button in spritekit swift ) 
SpriteKit または SKScene には、ビューを別のビューコントローラに送信するボタンを作成します。 i performsegueを使って試してみましたが、明らかに SKScene はこれをサポートしていません。 99887776610 を使...

1  ArskViewでView Controllerを閉じるときに、前のビューコントローラに埋め込まれたSKSCHENEを更新する方法  ( How can i refresh an skscene embed in a previous view controller when dismissing ) 
私のSpritekitゲームでは、私は2つのビューコントローラを持っています。 1つはMenualViewControllerです。これはSKVIEW / SKSCENEを持っています - これはレベル選択などを処理します。 それから私のGamesEnevie...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有