0
어떻게 장면 외부에서 SpriteKit Scene을 업데이트 할 수 있습니까? 예 : UIButton을 눌러 SKLabelNode를 어떻게 업데이트합니까?외부 UIViewController에서 SpriteKit 장면의 노드 업데이트
장면
class GameScene: SKScene {
var myLabel:SKLabelNode = SKLabelNode()
override func didMoveToView(view: SKView) {
myLabel.text = "Initial State"
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
self.addChild(myLabel)
}
func didPressButton() {
myLabel.text = "Pressed! "
}
의 ViewController
import UIKit
import SpriteKit
class GameViewController: UIViewController {
@IBAction func didPressButton(sender: AnyObject) {
if let scene = GameScene(fileNamed:"GameScene") {
scene.didPressButton()
}
}
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(fileNamed:"GameScene") {
let skView = self.view as! SKView
skView.presentScene(scene)
}
}
…
}
내가 현장 내부의 일반적인 touchesBegan
장면 내부의 SKLabelNode를 업데이트 잘 작동하는지 이해합니다. 그러나 저는 특히 외부 이벤트에서 장면을 업데이트하는 데 관심이 있습니다. 어떤 아이디어?
protocol PauseBtnSelectorDelegate {
func didPressPauseBtn(pauseBtn:SKSpriteNode)
}
class HUD: SKNode {
var pauseBtnDelegate:PauseBtnSelectorDelegate?
var pauseBtn :SKSpriteNode!
...
func pauseBtnTap(sender:SKSpriteNode) {
print("pauseBtn touched")
pauseBtnDelegate!.didPressPauseBtn(sender)
}
}
파일에서 사용자가 탭 이벤트에 통보 할 :
class GameScene: SKScene,PauseBtnSelectorDelegate {
var hud: HUD!
...
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
// Adding HUD
self.hud = HUD(currentScene: self,nodeSize: self.frame.size)
self.hud.pauseBtnDelegate = self
self.addChild(hud)
}
func didPressPauseBtn(pauseBtn:SKSpriteNode) {
print("pauseBtn touched")
// Pause the game
}
}
를 파일에서