शो SpriteKit स्कोर में SwiftUI देखें

0

सवाल

मैं कोशिश कर रहा हूँ बनाने के लिए एक ZStack उपरिशायी होगा कि स्कोर से SpriteKit । मैं निम्नलिखित कोड का अधिकार अब, यह काम करता है दिखाने के कोड के भीतर वास्तव में दृश्य है, लेकिन मैं चाहता हूँ यह दिखाने में देखें

import SwiftUI
import SpriteKit

var gameScore = 0

class GameScene: SKScene, SKPhysicsContactDelegate {

let removeLabel = SKAction.sequence([SKAction.fadeIn(withDuration: 0.3), SKAction.wait(forDuration: 0.8), SKAction.fadeOut(withDuration: 0.3)])

override func sceneDidLoad() {
    super.sceneDidLoad()
}

यहाँ समारोह है:

// MARK: - Add Score
func addScore(){
    if gameScore < 250 {
        gameScore += 1
        scoreLabel.text = String(format: "%06d", gameScore)
        let possibleScores: Set = [10, 20, 30, 40, 50, 65, 80, 95, 110, 125, 150, 175, 200, 250]
        
        if possibleScores.contains(gameScore) {
            startNewLevel()
        }
    } else {
        gameScore += 2
        scoreLabel.text = String(format: "%06d", gameScore)
        let possibleScores: Set = [10, 20, 30, 40, 50, 65, 80, 95, 110, 125, 150, 175, 200, 250]
        
        if possibleScores.contains(gameScore) {
            startNewLevel()
        }
    }
}

मेरे विचार में कोड इस तरह दिखता है:

import SwiftUI
import SpriteKit

struct PageTwo: View {

@State var gameScore = 0

var body: some View {
    ZStack {
        GameView()
        ZStack {
            Text("Score: \(gameScore)")
                .foregroundColor(.white)
      }
    }
  }
}

यह दिखा रहा है स्कोर है, लेकिन गिनती नहीं है, यह तो शायद किसी ने मुझे बता सकते हैं जहाँ मैं जा रहा हूँ यहाँ गलत? इस SpriteKit + SwiftUI मेरे लिए नया है और अभी भी नहीं काफी मिल गया.

sprite-kit swiftui
2021-11-23 16:22:40
1

सबसे अच्छा जवाब

0

आप की जरूरत है का उपयोग करने के लिए ObservableObject और एक प्रकाशक के लिए है कि, मैं देखा करने के लिए अपने कोड, वहाँ है कुछ कोड स्रोत याद आ रही है, कैसे कभी, यह एक उदाहरण है:आप के लिए

class GameScene: SKScene, SKPhysicsContactDelegate, ObservableObject {  // <<: Here 1
    
    @Published var gameScore = 0 // <<: Here 2
    
    let removeLabel = SKAction.sequence([SKAction.fadeIn(withDuration: 0.3), SKAction.wait(forDuration: 0.8), SKAction.fadeOut(withDuration: 0.3)])
    
    override func sceneDidLoad() {
        super.sceneDidLoad()
    }
    
    func addScore(){
        if gameScore < 250 {
            gameScore += 1
            
        } else {
            gameScore += 2
            
        }
    }
    
}



struct PageTwo: View {
    
    @StateObject var gameScene: GameScene = GameScene() // <<: Here 3
    
    var body: some View {
        
        Text("Score: \(gameScene.gameScore)") // <<: Here 4
            .onTapGesture {
                gameScene.addScore()  // <<: Here 5
            }
        
    }
    
}
2021-11-23 17:10:39

दुर्भाग्य है कि कुछ भी नहीं बदला है, लेकिन मुझे लगता है कि यह मेरे करीब । हालांकि यह क्या है, नहीं कर रही है गिनती स्कोर. यह होना चाहिए addScore() हर समय एक छोटा तारा नष्ट हो जाता है । मुझे पता है कि पूरे सकता है मददगार होगा, लेकिन यह कोड का एक बहुत. मैं मूल रूप से पुनर्निर्माण मेरा खेल इतना है कि यूआई है 100% SwiftUI और तर्क SpriteKit.
Norbert

आप की कोशिश की मेरे दिए गए कोड में जवाब? यह मेरे लिए काम करता है. और यह एक तरीका है आप के लिए, के रूप में मैं ने कहा, मैं नहीं का उपयोग करने के लिए अपना पूरा परियोजना है और मुझे लगता है कि यह बनाता है में कोई परिवर्तन नहीं मेरा जवाब या तो. वहाँ कोई अन्य तरीका है आप के लिए, सभी में है मेरा जवाब. जिस तरह से उपयोग कर रहा है ObservableObject.
swiftPunk

मुझे लगता है कि पहेली के अंतिम टुकड़ा है कि .onTapGesture सही नहीं है, क्योंकि मैं करने के लिए नहीं चाहते addScore() onTapGesture, बल्कि जब गोली मारता क्षुद्रग्रह. अपने कोड के बाकी काम करता है, क्योंकि मैं के साथ यह परीक्षण किया onAppear
Norbert

जो ने कहा कि आप का उपयोग करना चाहिए .onTapGesture अपनी परियोजना में! यह एक उदाहरण है परीक्षण करने के लिए है कि हम पढ़ सकते हैं/राइट वर्ग के लिए! क्यों आप मिश्रण परीक्षण कोड के साथ अपनी परियोजना. कोई विचार है! अपने मुद्दे नहीं है SwiftUI या SpriteKit, आप की जरूरत है बुनियादी जानने के लिए पहली बार में! पुनश्च: इस बारे में कॉलिंग समारोह के addScore() आप कॉल कर सकते हैं जब कभी और जहां कभी आप चाहते हैं, अपनी अंतिम टिप्पणी में आप से पता चलता है, बुनियादी समस्या कोडिंग में.
swiftPunk

मुझे पता है कि अपने उदाहरण के लिए यह कोड का परीक्षण, और काम किया है कि. मैं सिर्फ होगा बाहर आंकड़ा कैसे यह करने के लिए गिनती के खेल के साथ अब तर्क में swiftui.
Norbert

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................