SteamController
为 iOS 和 tvOS 提供内置支持 Steam 控制器。
有关如何使用蓝牙低功耗模式下的 Steam 控制器的信息,请参阅 `Steam Controller BLE`。
示例
要运行示例项目,克隆仓库,并运行 SteamControllerTestApp 目标。
在示例应用程序中,开启您的控制器(在 BLE 或 BLE 配对模式下)并点击扫描。连接的控制器将出现在列表中,UI 将反映控制器的状态。点击列表中的控制器将打开该控制器的设置视图,在那里您还可以查看电池级别,并更改其配置(见上图)。
要求
- iOS 12 或更高版本(未测试早期版本)。
- 带有 BLE 固件 的 Steam 控制器。
- 支持使用
GameController
框架的 MFi 控制器的游戏。 - 从 iOS 13 开始,您的应用程序的 Info.plist 需要一个
NSBluetoothAlwaysUsageDescription
键,其中包含蓝牙使用说明。
安装
CocoaPods
CocoaPods 是一个 Cocoa 项目的依赖关系管理器。您可以使用以下命令进行安装
$ gem install cocoapods
要使用 CocoaPods 将 SteamController 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
pod 'SteamController'
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个去中心化依赖关系管理器,它构建您的依赖关系并提供二进制框架。
您可以使用以下命令使用 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 SteamController 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "zydeco/SteamController"
运行 carthage update
来构建框架,并将构建的 SteamController.framework
拖入您的 Xcode 项目。
使用方法
一切都应该像使用 MFi 控制器一样工作。根据您游戏的工作方式,您可能根本不需要做出任何更改。
#import <SteamController/SteamController.h>
.- 要监听 Steam 控制器,可以进行以下操作
- 当您的应用程序启动时,调用
[SteamControllerManager listenForConnections]
(使用私有 IOKit API)。 - 当您想要扫描控制器时,调用
[[SteamControllerManager sharedManager] scanForControllers]
。
- 当您的应用程序启动时,调用
- 与原生控制器一样,框架将发布
GCControllerDidConnectNotification
和GCControllerDidDisconnectNotification
。 - 连接的 Steam 控制器将在
[GCController controllers]
中返回。 - Steam 控制器是
GCController
的子类 (SteamController
),实现了extendedGamepad
配置文件。 - 核心按钮映射到苹果的 MFi 扩展游戏手柄配置文件。
- 触控板和摇杆可以映射到 D-pad 和摇杆。(见下文)
- 触控板可以设置为需要点击输入(默认)或不。
按钮映射
- 模拟摇杆:L-拇指摇杆
- 左侧触控板:D方向键 (需要点击)
- 右侧触控板:R-拇指摇杆 / C按钮 (需要点击)
- A, B, X, Y:等效
- 边框/肩部:L1 / R1
- 扳机:L2 / R2
- 抓握按钮:L3 / R3
- Steam按钮:暂停处理程序和通过
steamButtonCombinationHandler
的组合 - 模拟摇杆点击:L3 (默认)
- 触控板点击:L3 / R3 (当点击不是输入所需时)
- 后退:选项按钮
- 前景:菜单按钮
向后兼容的另一视图映射
由于选项和菜单按钮是从iOS 13开始添加的,因此后退和前景也被添加为GCExtendedGamepad
的类扩展。
- 后退:
steamBackButton
- 前景:
steamForwardButton
控制器配置
SteamController
类有一些额外的属性来定制其配置。有关更多信息,请参阅文档。这些选项在示例应用程序中作为GUI选项可用。
许可
SteamController框架可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。