[GameplayKit] iOS 게임 어플리케이션에서의 State 모드 실천 Part_삼
저번 기사까지.
[GameplayKit] iOS 게임 어플리케이션에서의 State 모드 실천 Part_이급수기를 설치하여 얻을 수 있는 모든 상태의 공통된 기능을 정의한 DispenserState
류.
이 문장에 관하여
본고는 상태와 상태기를 실현할 것이다.
급수기가 변화할 수 있는 각 상태를 나타내는 종류를 정의하다.
급수기는 다음과 같은 상태로 변화한다.
본고는 상태와 상태기를 실현할 것이다.
급수기가 변화할 수 있는 각 상태를 나타내는 종류를 정의하다.
급수기는 다음과 같은 상태로 변화한다.
상태기를 사용하면 급수기 자체를 조작하는 것보다 더 효과적으로 급수기를 처리할 수 있다.
단계
FullState
정의 클래스채워진 상태를 나타내는 클래스 정의
메뉴 모음에서 "File > New > File...> iOS > Swift File"을 선택합니다.
파일 이름은
FullState.swift
입니다.계승
SpriteKit
클래스의 GameplayKit
클래스를 정의하기 위해 DispenserState
및 FullState
프레임워크를 가져옵니다.FullState.swift
import SpriteKit
import GameplayKit
class FullState: DispenserState {
}
부류에 정의된 초기화 프로그램을 사용하여 필요한 초기화 프로그램을 정의합니다.또한
didEnter(from:)
및 willExit(to:)
방법을 덮어씁니다.FullState.swift
class FullState: DispenserState {
init(game: GameScene) {
super.init(game: game, associatedNodeName: "FullState")
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
let green = SKColor.green
changeIndicatorLightToColor(green)
}
override func willExit(to nextState: GKState) {
super.willExit(to: nextState)
let black = SKColor.black
changeIndicatorLightToColor(black)
}
}
didEnter(from:)
방법과 willExit(to:)
방법은 급수기의 표시등 색깔을'가득 채운 후 녹색이 가득 채워지지 않으면 검은색'으로 변화시킨다.상태기 정의
상태기는 각종 상태로의 전환을 관리하는 것을 책임지고
GKStateMachine
류로 표시한다.게임 장면에서 정의
GKStateMachine
류의 대상.먼저
GameScene.swift
프레임워크를 GameplayKit
파일로 가져옵니다.멤버 범위 속성
stateMachine
에서 암시적 확장 옵션을 사용하여 속성을 정의합니다.stateMachine
속성 사용didMove(to:)
방법으로 초기화합니다.매개 변수 전달 GKState
유형의 대상의 그룹입니다.GameScene.swift
import SpriteKit
import GameplayKit
class GameScene: SKScene {
var stateMachine: GKStateMachine!
override func didMove(to view: SKView) {
let fullState = FullState(game: self)
stateMachine = GKStateMachine(states: [fullState])
stateMachine.enter(FullState.self)
}
override func didChangeSize(_ oldSize: CGSize) {
let dispenser = childNode(withName: "dispenser")
dispenser?.position.x = size.width / 2
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
let locationInView = touches.first?.location(in: view)
let locationInScene = convertPoint(fromView: locationInView!)
let refillButton = childNode(withName: "//refillButton")
let location = locationInScene
if atPoint(location) == refillButton {
print("attempt to refill.")
} else {
print("attempt to dispense")
}
}
}
didMove(to:)
방법에서 급수기의 초기 상태는 FullState
라고 기술했다.구축
시뮬레이터로 구축해 보세요.
급수기의 표시등
indicator
이 녹색이면 상태는FullState
이다.또한 상태 전환 패널의 [완전]이 강조 표시되는지 확인합니다.그림충전 상태 급수기
그림비가만상태 급수기
다음
상태기GKStateMachine
클래스를 사용하여 상태GKState
대상을 관리할 수 있다.
상태기는 GKState
유형의 실례를 조작하지 않고 클래스 자체를 처리하는 것을 알 수 있습니다.
다음[GameplayKit] iOS 게임 어플리케이션에서의 State 모드 실천 Part_사에는 상태에서 상태까지의 섬유를 실현하기 위해 다른 상태 대상을 정의합니다.
Reference
이 문제에 관하여([GameplayKit] iOS 게임 어플리케이션에서의 State 모드 실천 Part_삼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/imchino/items/20e15ea58b9f17d51f4d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([GameplayKit] iOS 게임 어플리케이션에서의 State 모드 실천 Part_삼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/imchino/items/20e15ea58b9f17d51f4d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)