GameControllerKit 是一个 Swift 包,可以轻松地在 iOS、macOS 和 tvOS 上使用游戏控制器。 它提供了一个简单的 API 来连接游戏控制器、读取输入并控制其灯光和触觉反馈。
dependencies: [
.package(url: "https://github.com/0xWDG/GameControllerKit.git", branch: "main"),
],
targets: [
.target(name: "MyTarget", dependencies: [
.product(name: "GameControllerKit", package: "GameControllerKit"),
]),
]
https://github.com/0xWDG/GameControllerKit
) 并点击 Next(下一步)。import SwiftUI
import GameControllerKit
struct ContentView: View {
/// The game controller kit
@State
var gameController = GameControllerKit()
/// Log
@State
var log: [String] = []
var body: some View {
VStack {
Button {
gameController.set(color: .GCKRandom)
} label: {
Text("Random Color")
}
Text("Controller: \(gameController.controller?.productCategory ?? "None"), " +
"\((gameController.controllerType ?? .generic).description)")
Text("Last action:\n\(String(describing: gameController.lastAction)).")
GCKControllerView()
.environmentObject(gameController)
List {
ForEach(log.reversed(), id: \.self) { text in
Text(text)
}
}
}
.padding()
.onAppear {
gameController.set(handler: handler)
UIApplication.shared.isIdleTimerDisabled = true
}
}
/// Handler
///
/// - Parameters:
/// - action: action
/// - pressed: is the button pressed?
/// - controller: which controller?
public func handler(
action: GCKAction,
pressed: Bool,
controller: GCKController
) {
log.append(
"\(String(describing: action))(\(action.position.arrowRepresentation)) \(pressed ? "Pressed" : "Unpressed"), " +
"Controller #id \(String(describing: controller.playerIndex.rawValue))"
)
if action == .buttonA && pressed {
// set to a random color
gameController.set(color: .GCKRandom)
}
}
}
🦋 @0xWDG 🐘 mastodon.social/@0xWDG 🐦 @0xWDG 🧵 @0xWDG 🌐 wesleydegroot.nl 🤖 Discord
想了解更多关于 Swift 的信息吗? 查看我的博客。