大多数浏览器和
Developer App 均支持流媒体播放。
-
支持新的游戏控制器
在 iOS 13、macOS Catalina 和 Apple TVOS 13 中,Game Controller 框架添加了对多款知名控制台游戏控制器的支持。简要了解新增的控制器,并理解它们提供输入的方式。了解处理可选按键的推荐最佳做法,学习 macOS 上的正确支持方式。
资源
相关视频
WWDC20
-
下载
大家好 我叫 James Kelly 我是 Apple 公司 游戏科技团队的 一名软件工程师 在这个视频中 我们会讲到今年 Game Controller 框架的 新性能和变化 以此来帮助大家 采用新的可支持的 Game Controller
Game Controller 框架 让你可以更容易地 为你在 iOS tvOS 和 macOS 上的游戏 增加针对 MFi Game Controller 的支持
通过普通的 API 摘取控制器硬件 Game Controller 框架 让你可以在不用担心 如何映像控制器数据的情况下 一次性写好你的代码
今年 我们很激动地介绍 对于一些很好的控制器的 新的支持 首先是微软的 可以使用蓝牙的无线 Xbox 00:00:54.066 --> 00:00:56.526 A:middle 它现在可以无缝嵌入
任何可以使用 Game Controller 框架的游戏 这还不是全部 Game Controller 框架 现在也可以支持 索尼的 DualShock 4 控制器 通过 Game Controller 框架 它可以与任何支持控制器的游戏兼容
很多开发者 在控制器的支持下 已经创造了很多的好游戏
雷曼大冒险 晶体管 傲气雄鹰 阿尔托的冒险 就是一些 很好的例子 在 App Store 里的游戏很少 能支持控制器 通过使用 Game Controller 框架 游戏将自动在 iOS 13 tvOS 13 和 macOS Catalina 中 支持 Xbox 无线控制器 和 DualShock 4 控制器
在这个视频中 我们还会讨论如何通过 Game Controller 框架 为新的控制器寻找一个参考 如何访问输入参数 一些支持 MFi Xbox 无线控制器和 DualShock 4 的 UI 最佳操作 还有一些关于如何 更新你们在 macOS 上之前通过 如 IOKit 等更低版本的框架 来支持游戏控制器的一些游戏的建议
首先 让我们来谈谈 支持这些新的控制器后 Game Controller 框架的变化 友情提醒 已经使用 Game Controller 框架的 游戏会免费获得支持 这意味着如果你的游戏 支持 MFi 控制器 它也会自动支持 Xbox 无线控制器和 DualShock 4 我们可以通过 GCController 的 GCExtendedGamepad 文件 来获得控制器的输入值
如果你们是第一次使用 Game Controller 框架 我们来简单谈谈 如何检测一个控制器 每个控制器都由 一个名为 GCController 的类所代表 这对于 MFi Xbox 无线控制器 DualShock 4 控制器等所有游戏控制器 00:02:45.486 --> 00:02:47.166 A:middle 都是相同的类
串口遥控器也是一样 它们都是 GCController 的例子
你要做的第一件事就是列一个 现有的连接的控制器名单 为了做到这个 你需要使用 GCController 的 controllers 类方法 它会回传一个 代表了所有连接的 控制器的 GCController 实例的阵列 如果没有连接任何控制器 这个阵列将是空的
你应该酌情 在你启动自己的 App 并装配控制器时 检查这个阵列
在你的 App 运行时 连接或断开控制器是很正常的 比如说 玩家在打开你的游戏后 可能会打开他们的控制器 他们的控制器可能会没电 或者他们的控制器 有可能超出范围了
为了告知这些情况 为 GCControllerDidConnect Notification 和 GCControllerDiddisconnect Notification 添加观察器 你的 App 用选项方法来完成启动 是一个很好的办法
现在你们试图 抓住一个连接的控制器的例子 我们来讨论一下 它可能拥有的按钮和其他输入 以及如何访问它们
首先 让我们简要概述一下 在控制器上有哪些可用的输入端
控制器有两个扳机 一个方向柄 两个手摇杆 一个菜单按钮 四个功能按钮 一个可程序化的 4-LED 条 两个侧肩按钮
我们先以四个功能按钮为例 仔细看看 实体钮如何映射到 API
我们现在看到的表格 列举了在控制器的 extendedGamepad 文件上的 四个功能按钮的属性 MFi 控制器上的功能键 和 Xbox 无线控制器一样 可能会直接 映射到这个 API 上
请注意关于 DualShock 4 控制器 有些细节需要考虑 因为它们使用图标 而不是字母 来代表它们的功能按钮 为了防止 将输入端映射到 API 上时 会有歧义 我们使用 位置等量来解决这些映射
比如说 如果我们把功能键当成 在控制器右侧 被排列成钻石形状的四个按钮 那么底部的十字按钮 就和 MFi 控制器底部的 A 按钮 在位置上是等量的 所以它会映射到按钮 A 的属性 这个带圆圈的功能按钮 则映射到按钮 B 诸如此类
接下来 我们来谈谈 可点击的手摇杆或者 L3 R3
我们在 iOS 12.1 tvOS 12.1 和 macOS Mojave 10.14.1 的 Game Controller 框架中 为这些输入增加了支持 尽管 Xbox 无线控制器和 DualShock 4 控制器 都有可点击的手摇杆 MFi 控制器的某些种类 中的控制器可能不能点击 让我们通过一个代码 来看看如何解决这个问题
比如说我们想要 在玩家按 L3 的时候 让玩家的人物蹲下 如果我们支持老版的 iOS tvOS 或 macOS 我们首先应该检查 我们是否有可以使用的 可点击的手摇杆的 API
即使我们这样做了 我们映射的特定的控制器 可能也不一定有 可点击的手摇杆 所以 我们要检查看看是否 左摇杆按钮是新的 如果是的话 我们要保证我们准备 映射到 L3 的用户交互 在这个例子中 也就是让游戏人物蹲下 可以通过一些其他方式实现
如果我们要 与一个我们已知的带可点击手摇杆 的控制器工作时 我们只需要将性能 指定到 L3 的按压柄 当玩家点击 左侧的手摇杆时 游戏会触发玩家角色下蹲
如果我们的游戏 在没有这个 API 的 iOS tvOS 或 macOS 版本上运行 我们还是需要编写一个代码 为游戏角色下蹲创建一个可替换路径
接下来 我们来谈谈 加入到 API 的支持 Xbox 无线控制器和 DualShock 4 控制器的 一些新的按钮 这就是我们所称的 辅助按钮 这些按钮 通常出现在控制器的中间
首先 我们有菜单按钮 它应该用于暂停 游戏并弹出 游戏中的暂停菜单 所有支持的控制器 都有这个按钮
现在让我们来看看选项按钮 这是一个通用按钮 但是你应该避免使用它 用于时间先决的活动 它一般位于旁侧
需要注意的 不是所有 控制器都有这个按钮
我们来看看这些新的 API 是如何映射到现有的 MFi 控制器上的中间的菜单按钮 直接映射到 GCExtendedGamepad 的 按钮菜单属性
在这个例子中需要注意的是 这个 MFi 控制器没有一个选项按钮 所以 GCExtendedGamepad 的 按钮选项属性是新的
接着就是 Xbox 无线控制器 如果一个控制器 有很多辅助按钮 我们限定这些按钮 映射为使用位置等量
右辅助按钮 在这个例子中也就是 Xbox 无线控制器的菜单按钮 直接映射到按钮菜单性能 而左辅助按钮 或 Xbox 无线控制器的视图按钮 映射到按钮的选项属性
在控制器中间的 Xbox 按钮则被保留为系统使用
相同的方法也可以 运用于 DualShock 4
我们还是可以使用 位置等量来限定按钮的映射
右辅助按钮或者 DualShock 4 的选项按钮 映射到按钮菜单属性 左辅助按钮 DualShock 4 的分享按钮 映射到 按钮选项属性 控制器中间的 PS 按钮同样也被保留了
请注意我们已经弃用了 contollerPausedHandler 你现在应该使用 buttonMenu API 我们来通过一个代码例子 来看看如何处理这个
比如我们想在玩家按下菜单按钮时 暂停或者开始这个游戏 如果我们支持 更旧版本的 iOS tvOS 或 macOS 我们应该先检查 我们是否有新的菜单按钮 API
如果有的话 我们先在 extendedGamepad 上的按钮菜单 注册一个 PressedChangedHandler 属性
在这个处理器中 我们切换暂停菜单 一般来说 当玩家想要 暂停游戏 他们都想立刻暂停 所以我们需要保证 在按下按钮的时候 而不是放开按钮的时候 就能触发这个行为
如果新的 API 不可行 我们还是应该 将我们的功能注册于 旧的 controllerPausedHandler 当菜单按钮被按下时 它们就会被触发 那就是菜单按钮
现在我们现在来看看 选项按钮选项按钮 我们还是需要记住 不是所有的控制器都有这个按钮 我们再通过另一个代码的例子 来看如何处理这个
我们想要在玩家按下选项按钮时 能够触发一个 在游戏中的设定菜单 如果我们支持 更老版本的 iOS tvOS 或 macOS 我们首先应该看一下 我们是否有新的选项按钮
即使我们有 我们映射的控制器 也不一定有一个 实体选项按钮
所以我们检查一下 看看选项按钮是否是新的 如果是的话 我们需要保证设定菜单 通过其他方法是可访问的 比如说 我们可以将其 列为暂停菜单中的一个项目
如果控制器有一个 选项按钮 我们可以将 我们的行为指定至 buttonOptions.pressedHandler 当一个玩家点击 选项按钮时 游戏会切换设定菜单
如果新的 API 是不可行的 我们还是需要保证 有可以到达设定菜单的可替换路径 我们刚刚快速看了一下 今年加入 Game Controller 框架 可以支持新增的 Xbox 无线控制器和 DualShock 4 控制器的 新的 API
现在 让我们来谈谈 处理不同的控制器的 的 UI 最佳操作 这样你的用户可以 最大程度地最好地体验你的游戏
因为 Game Controller 框架 被扩展为 不仅仅是支持 MFi 控制器 因此需要考虑一个新的问题 按钮和其他输入 可能在控制器间 在视觉上是不协调的 在这个例子中 提示符中的 B 按钮只匹配 MFi 控制器 Xbox 无线控制器的 B按钮是红色的 DualShock 4 则是一个圆形按钮
我们仔细看看 如何处理这个问题 如果你让你的玩家 接触你游戏的基础结构 你想要展示一个 游戏中的提示符来告诉他们如何限制 在这个例子中 你的限制功能会映射到 GCExtendedGamepad 的按钮 B 属性
对于 MFi 控制器来说 我们正如之前做的那样 展示我们的 MFi B 按钮素材 对于 Xbox 无线控制器来说 我们需要 微调素材 在这个例子中 就是把 B 按钮变红
最后 当 DualShock 4 是 现用的控制器时 我们会展示一个圆形按钮 现在 不管玩家在 使用哪个控制器 他们都可以很容易地理解 你游戏中的提示符 我们通过一个代码示例来看看如何实现这个
在这里我们有一个名为 getBlockButtonAsset 的简单功能 它会将合适的艺术素材 返回至 block 按钮
首先 我们切换 控制器的产品种类 这是 GCController 新增加的 决定这是哪种类型的控制器的新性能 如果这是一个 Xbox 无线控制器 我们会返回 红色 B 按钮素材 如果这是一个 DualShock 4 游戏控制器 我们将返回 红色的圆形按钮素材
最后 默认情况下 推翻 MFi 绿色 B 按钮素材 通过这种方式 你的游戏将支持 当前可用的各种 MFi控制器 并在未来添加新的 支持的控制器时可以 很好地回到一个可感测的素材 让我们回到前面的 block 示例 你们可以在游戏教程和提示中 使用通用符号 而不是 为每种类型的控制器 创建独特的图片素材
通过提供一个 不依赖于其他任何内容 只依赖于位置等量的通用提示符 不管连接的是哪种控制器 你可以放心 你的玩家将能够轻松理解 你的游戏内的引导教学 在这个例子中 很明显 玩家应该按右侧的功能按钮
最后一点需要注意的是 即使玩家是独自玩游戏 他也可能同时有多个控制器 连接到他们的设备上 在这种情况下 你应该支持 所有连接的控制器 因为玩家可能随时在它们之间切换 这意味着你需要 识别来自所有连接的控制器的输入 不论是 将它们分别拖拽到每一帧中 或者为它们中的每一个 注册输入处理器
你还应该更新 游戏内的引导教程和视觉效果 以匹配最近使用的控制器 例如 如果玩家 正在使用他们的 MFi 控制器 显示适当的 MFi 图片素材
如果玩家在他们连接的 DualShock 4 上按下了输入端 所有游戏中的图像 将自动调整 使用 DualShock 4 图片素材
通过动态调整你的图像 来适应最近使用的控制器 你会为你的玩家 提供一个直接的和改善的 控制器操作的体验
对于那些 之前已经将在 macOS 上的游戏控制器支持 放在 Game Controller 框架之外的人来说 我们对于你们的游戏 有些新的指导
当你采取 Game Controller 框架时 控制器就会启动 你应该在 macOS 上 使用它支持 Mfi Xbox 无线和 DualShock 4 控制器 我们抽象化了在不同控制器间不一样的 硬件的复杂性 我们为你们的 App 在 iOS tvOS 和 macOS 中 提供了一致性
这也可以帮助你们的 App 保持与现有或未来 OS 更新后的兼容性 对于那些 之前通过更低等级的 如 IOKit 的 API 硬代码支持的控制器 我们强烈建议 你们将执行 转移到 Game Controller 框架中
因为新的控制器会出现在 IOKit 和 Game Controller 框架中 你应该丢弃你的 IOKit 执行 来保证没有冲突
这会允许你 对一个单一的界面 进行编码 并免费接收 新的游戏控制器支持
让我们来总结一下在这个 视频中讨论的内容
Game Controller 框架 通过一个共同的 API 提取硬件 让你只需要编写一次代码 而不需要担心不同控制器间 低版本的差异 这个的好处是可以让你的游戏 自动支持新加入的 如 Xbox 无线控制器和 DualShock 4 控制器 等游戏控制器
然而 为了给你的玩家 提供最好的用户体验 你应该改变你游戏的 UI 和屏幕上的 对有效的控制器的指示器
最后 通过将现有的控制器支持 从低版本的 API 转移到 Game Controller 框架 来保证你的 macOS App 与未来的 OS 更新是兼容的
更多关于 今年游戏控制器的更新 可以在 Apple 开发人员网站上找到
这就是今年 游戏控制器的更新 谢谢观看 我们希望这些信息能对你们有帮助 你们可以用这些内容 创造一些支持游戏控制器的好游戏
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。