Как увеличить и отобразить счет каждую секунду?

-4

Я делаю игру SpriteKit в Swift. В то время как gameState = inGame, я хочу, чтобы оценка увеличивалась каждую секунду. Как и где я буду вычислять и отображать что-то вроде этого?

Другие ответы, которые я нашел, устарели и не очень полезны. Может быть, я не знаю, что это уже существует, поэтому я был бы очень признателен, если бы вы могли указать мне в этом направлении. Спасибо за помощь.

спросил(а) 2021-01-25T16:38:22+03:00 4 месяца, 2 недели назад
1
Решение
108

Вот очень простой способ увеличения и отображения оценки каждую секунду, как вы описали.

"Таймер" здесь будет привязан к вашей частоте кадров игры, потому что счетчик проверяется методом обновления, который может меняться в зависимости от частоты кадров. Если вам нужен более точный таймер, рассмотрите класс Timer и Qaru или Google, чтобы узнать, как его использовать, поскольку он может быть более сложным, чем простой.

Чтобы проверить это, создайте новый проект шаблона игры в Xcode и замените содержимое вашего файла GameScene.swift на следующий код.

Вам действительно не нужны части, которые используют gameStateIsInGame. Я просто помещаю это в качестве демонстрации из-за вашего замечания об проверке свойства gameState чтобы таймер загорелся. В вашем собственном коде вы бы интегрировали свою собственную gameState но вы ее обрабатываете.

import SpriteKit

class GameScene: SKScene {
var scoreLabel: SKLabelNode!
var counter = 0
var gameStateIsInGame = true
var score = 0 {
didSet {
scoreLabel.text = "Score: \(score)"
}
}

override func didMove(to view: SKView) {
scoreLabel = SKLabelNode(fontNamed: "Chalkduster")
scoreLabel.text = "Score: 0"
scoreLabel.position = CGPoint(x: 100, y: 100)
addChild(scoreLabel)
}

override func update(_ currentTime: TimeInterval) {
if gameStateIsInGame {
if counter >= 60 {
score += 1
counter = 0
} else {
counter += 1
}
}
}
}

ответил(а) 2021-01-25T16:38:22+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема