visionOS Pathway

开始你的旅程

Pathway 是一系列简单易懂且易于浏览的视频、文档和资源,可帮助你踏上构建出精彩 App 和游戏旅程的第一步。

Apple Vision Pro 提供了一幅无边画布,供你探索、试验和畅玩,让你可以自由地尽情重新构想你的空间计算体验。用户可以在与周围环境保持联系的同时与你的 App 进行交互,也可以完全沉浸在你创造的世界中。最重要的是,无论你之前是否有为 Apple 平台进行开发的经验,SwiftUI、UIKit、RealityKit 和 ARKit 等熟悉的框架都可帮助你为 visionOS 构建 App。

你将学习哪些内容
  • 如何规划和创建适用于 Apple Vision Pro 的 visionOS App
  • 从哪里下载 Apple 设计工具和资源
  • 如何从《人机界面指南》中获益
你需要什么
  • 用于构建、测试和分发的 Xcode
刚开始接触 Apple?
Apple 开发者入门
有 visionOS 方面的疑问?
查看 Apple 开发者论坛

了解空间计算的基石

探索构成空间计算的基本元素,如窗口、空间容器和空间,并了解熟悉的框架如何帮助你运用这些元素来构建引人入胜的沉浸式体验。

进一步了解

针对 visionOS 进行设计

了解如何设计出色的 App、游戏和体验以实现空间计算。探索全新的输入形式和组件。深入了解深度和缩放。添加令人沉浸其中的时刻。创建空间音频音景。寻找协作和交流机会。同时帮助用户置身于周围环境,同时探索全新的世界。无论你是首次设计空间体验,还是多年来一直在构建完全令人沉浸其中的 App,都应了解如何打造令人震撼的英雄时刻、令人沉醉的音景、以人为本的 UI 等,所有这些都可以通过 visionOS 实现。

打造适用于 visionOS 的产品

在 visionOS 上构建 App 时,你可以随时在 App 中混合搭配使用窗口、空间容器和空间打造适合内容的时刻。

注:用户还可以在 visionOS 中将现有的 iPadOS 或 iOS App 作为兼容 App 运行。你的 App 在用户的周围环境中显示为一个可缩放的窗口。

获取适当的工具

下载 Apple 的集成开发环境 Xcode,启动软件开发流程。Xcode 提供一套齐全的软件开发工具,包括项目管理支持、代码编辑器、可视化 UI 编辑器、调试工具、面向不同设备的模拟器,以及用于评估性能的工具,等等。Xcode 还包含一整套系统代码模块 (称为框架),以辅助你开发软件。

要在 Xcode 中创建新项目,请选取“File”(文件) >“New”(新建) >“Project”(项目),然后按提示操作来创建 visionOS App。所有新项目都使用 SwiftUI,它提供可用于创建 App 核心功能的现代声明式编程模型。

SwiftUI 可与 Apple 的数据管理技术无缝协作,为内容创建提供支持。Swift 标准资料库和 Foundation 框架提供了数组和字典等结构类型,以及字符串、数字、日期和其他常用数据值等值类型。对于你定义的任何自定类型,可以采用 Swift 的 Codable 支持将这些类型持久保留在磁盘上。如果你的 App 管理大量的结构化数据,SwiftData、Core Data 和 CloudKit 提供了面向对象的模型来管理和持久保留你的数据。

你还可以使用 Unity 强大且熟悉的创作工具来打造新的 App 和游戏。除了 AR Foundation 等熟悉的 Unity 功能之外,还可尽享 visionOS 带来的各种好处,例如透视和动态注视点渲染。

向你的界面添加新的维度

在构建 App 时,请首先创建一个窗口,然后视情况添加各种元素,帮助用户沉浸在你的内容中。添加空间容器以展示 3D 内容或利用全空间增强沉浸体验。mixed 样式配置空间以显示透视效果,但是你可以应用 progressive 或 full 样式来增强沉浸体验和最大限度地减少干扰。

  • 给窗口添加深度:将基于深度的偏移应用于视图,以重点展示窗口的各个部分,或者指示模态的变化。将 3D 对象 直接纳入到视图布局中,以与 2D 视图并排放置。
  • 为自定视图添加悬停效果:利用悬停效果在用户注视自定元素时使其高亮显示。自定悬停效果的行为,以获得所需外观。
  • 利用装饰元素实现菜单和工具栏:利用装饰元素 将常用工具和命令置于窗口的外侧边缘。

RealityKit 在 visionOS App 中发挥着重要作用,你可以在 App 中使用它来管理 3D 对象的创建和动画效果。以编程方式创建 RealityKit 内容或使用 Reality Composer Pro 构建整个场景,其中包含你所需的所有对象、动画、声音和视觉效果。利用 RealityView 将这些场景添加到你的窗口、空间容器或空间中。此外,你还可以在 App 中充分利用其他 3D 功能:

  • 采用 MaterialX 着色器实现动态效果:MaterialX 是一项受到主流电影、视觉特效、娱乐和游戏公司支持的开放标准。利用现有工具来创建 MaterialX 着色器,然后利用 Reality Composer Pro 将它们整合到你的 RealityKit 场景中。
  • 将 3D 内容储存在 USDZ 文件中:使用你喜欢的工具构建复杂的 3D 对象和网格,并将其作为 USDZ 素材储存在项目中。在 Reality Composer Pro 中对素材进行非破坏性更改并将它们合并为更大的场景。
  • 在 Xcode 中创建 3D 内容预览:直接在项目窗口中预览包含 3D 内容的 SwiftUI 视图。为 Xcode 预览 指定多个摄像头位置,以便从不同角度查看内容。

设计简单直接的交互

在 visionOS 中,用户主要依靠眼睛和手与 App 进行交互。当用户注视某个对象,并用其他手指与拇指轻点以选择此对象,称为间接手势;当用户的手指与 3D 空间中的对象直接交互,则称为直接手势。在 App 中处理输入时:

  • 采用标准系统手势:依靠轻点、轻扫、拖移、按住、轻点两下、缩放和旋转这些手势来完成与 App 的大部分交互。SwiftUIUIKit 跨平台提供了对这些手势的内建支持,可以处理这些手势。
  • 添加对外部游戏控制器的支持:游戏控制器为 App 提供了另一种输入形式。系统会自动将来自所连无线键盘、触控板和辅助功能硬件的输入定向到 App 的事件处理程序代码。对于游戏控制器,请利用 Game Controller 框架 显式添加支持。
  • 使用 ARKit 创建自定手势:系统使用 ARKit 来推动与用户周围环境的交互。当 App 进入全空间时,你可以请求授予检索用户手和手指位置 的权限,并使用这些信息来创建自定手势。

在全空间中,ARKit 会提供额外的服务来支持与内容相关的交互。在用户的环境中检测表面和已知图像,并向其附加锚点。获取周围环境的网格并将其添加到 RealityKit 场景中,以支持 App 内容与现实世界中的物体进行交互。确定 Apple Vision Pro 相对于周围环境的位置和方向,并添加现实场景锚点以放置内容。

打造全新境界的音频和视频体验

Apple Vision Pro 支持立体视频,以帮助使电影和其他娱乐内容跃然屏幕之上并融入到用户的周围环境之中。空间音频是 visionOS 的默认体验,因此请思考你想要如何充分利用这一体验。

  • 更新 3D 视频素材:在沉浸式 3D 环境中播放 3D 影片,将观影之夜提升到全新境界。QuickTime 文件格式支持添加看起来能够跃然屏幕之上的内容。利用 AVKitAVFoundation 播放影片。在影片文件中添加立体内容的原子
  • 支持空间音频:利用 AVFAudio 构建 App 的音乐播放器,其包含了 AVFoundation 框架中的音频相关类型。利用 PHASE 让你的音频提升到另一维度,它支持在你的游戏和 App 中创造复杂的动态空间音频体验。
  • 流媒体播放直播或录制内容:了解如何利用 HTTP Live Streaming 创建流媒体内容并部署到你的服务器上。利用 AVFoundation 播放来自你的 App 的流媒体内容。

采用包容性设计

打造具有包容性的 App 可确保人人都能访问你的内容。Apple 技术以许多不同的方式助力实现包容性。务必在你的 App 中支持这些技术。在《人机界面指南》中进一步了解如何在所有平台上保证包容性。

  • 更新辅助功能标签和导航方式:Apple 将辅助功能支持直接内建到了其技术之中,但是屏幕朗读器和其他辅助功能仍需要依靠你提供的信息才能打造无障碍体验。检查辅助功能标签和其他描述,确保它们提供了实用的信息,并确保基于焦点的导航简约且直观。请参阅“辅助功能”
  • 支持通过其他方式访问各项功能:为用户提供选择和操作内容的其他方式,例如菜单命令游戏控制器。将辅助功能组件 添加到 RealityKit 实体中,以便用户可以利用辅助技术来浏览和选择实体。
  • 添加“旁白”播报:当“旁白”在 visionOS 中处于活跃状态时,用户可以使用手势来浏览 App。如果他们启用了直接手势模式来与 App 进行交互,则播报 可确保仍能跟上与内容进行交互的节奏。
  • 为音频内容添加字幕:对某些人来说,字幕必不可少,而对其他人来说,字幕在特定情况下也非常实用。例如对于在嘈杂环境中观看视频的人来说,字幕非常有用。在你的 App 中,不仅要包含文本和对话的相应字幕,还要包含音乐和音效的相应字幕。确保你在自定视频引擎中呈现的字幕采用了系统外观
  • 考虑视觉和动态效果产生的影响:动态效果可能会令人感到厌烦,即使是对动态效果不太敏感的人也是如此。限制使用包含快速移动、弹跳或波浪状动态、缩放动画、多轴移动、转动或旋转的效果。当系统辅助功能设置指示最好减弱动态效果时,请提供合适的替代方案。请参阅《人机界面指南》>“动态效果”

有关在 visionOS 中使 App 实现无障碍使用的更多信息,请参阅“改进 visionOS App 中的辅助功能支持”

测试和优化

在开发期间可以通过多种方式来测试你的 App,确保它可以在 Apple Vision Pro 上顺畅运行。

  • 全面测试和调试 App:在开发期间,使用内建 Xcode 调试器在出现问题时进行调试。使用 XCTest 构建自动化测试套件并在每次构建时运行,以验证新代码的运行是否与预期相符。在不同的系统负载下运行这些测试,以确定 App 的运行情况。
  • 注意把控工作量:确保 App 所做的工作能够带来切实的好处。优化算法以最大限度地减少 App 消耗的 CPU 和 GPU 资源。利用 Xcode 附带的 Instruments App,排查代码中的瓶颈和其他性能问题。请参阅“为 visionOS App 制定性能计划”
  • 采用持续集成 (CI) 工作流程:通过确保每次提交都能保证代码库的质量和稳定性,贯彻 CI 理念。运行测试套件中与性能相关的测试。使用 Xcode Cloud 的持续集成系统,实现自动构建你的 App、自动完成测试循环及向 QA 团队自动分发。

更深入地了解 SwiftUI 和 RealityKit

如需进一步了解 SwiftUI 和 RealityKit,请探索一系列专门的讲座,它们重点介绍 SwiftUI 场景类型,帮助你在窗口、空间容器和空间中打造出色体验。熟悉 Model 3D API,了解如何为 App 添加深度和维度,并了解如何使用 RealityView 渲染 3D 内容。我们将帮助你为开始使用 ImmersiveSpace 做好准备。ImmersiveSpace 是一种新的 SwiftUI 场景类型,让你能够打造沉浸式 visionOS 体验。了解用于管理场景类型、增强沉浸体验以及构建“脱离现实世界”的体验的最佳做法。

在此基础上,了解如何使用 RealityKit 将引人入胜且令人沉浸其中的内容引入 App 中。开始使用 RealityKit 实体、组件和系统,并了解如何为项目添加 3D 模型和效果。我们将向你展示如何将内容嵌入到实体层次结构、如何使用锚点将虚拟内容与现实世界融合在一起、如何将粒子效果引入 App 中、如何添加视频内容以及如何使用入口创建更能令人沉浸其中的体验。

重新探索 ARKit

visionOS 使用 ARKit 算法来处理持久化、绘制现实场景地图、分割、抠图和环境光线等功能。这些算法会始终运行,让 App 和游戏在位于共享空间时能自动利用 ARKit。打开专用的全空间后,你的 App 便可充分利用 ARKit API 将虚拟内容与现实世界融合在一起。

我们将分享这个框架从哪些方面进行了全面重新设计,以帮助你在构建交互式体验的同时保护隐私。探索如何制作 3D 内容以供用户在房间中与之交互,不管想要在地面上玩虚拟拍球游戏,还是在墙上泼洒虚拟颜料。探索 ARKit API 的最新更新,在我们演示如何在 App 中利用手势跟踪和场景几何结构时跟着一起操作。

探索更多适用于 visionOS 的开发者工具

Apple 提供了一整套工具,帮助你构建适用于 visionOS 的出色 App、游戏和体验。你已经在上面的内容中探索了 Xcode,现在了解一下如何在 3D 开发工作流程中充分利用 Reality Composer Pro,并探索如何能够使用 Unity 创作工具打造出色的空间计算体验。

认识 Reality Composer Pro

探索为 visionOS App 预览和准备 3D 内容的全新方式。Reality Composer Pro 利用 USD 的强大功能来帮助你创作、编辑和预览 3D 模型、材质和声音等素材。我们将向你展示如何充分利用这个工具为你的 App 创建引人入胜的内容,向对象添加材质,并在 Xcode 中生动呈现你的 Reality Composer Pro 内容。我们还将带你了解 Apple 平台上通用场景描述 (USD) 的最新更新。

Unity 入门

了解如何直接在 Unity 中构建 visionOS 体验。探索 Unity 开发者如何使用现有的 3D 场景和素材来构建适用于 visionOS 的 App 或游戏。得益于 Unity 和 Apple 框架的深度整合,在任何可以使用 RealityKit 的平台中,你都能打造出色的体验,无论你是为窗口、空间容器还是共享空间构建 3D 内容。你还可以尽享针对 Apple 平台进行构建的各种好处,包括访问原生输入形式、透视等。我们还将向你展示如何使用 Unity 来打造完全令人沉浸其中的体验。

了解 TestFlight 和 App Store Connect

App Store Connect 提供了在 App Store 上管理、测试和部署 visionOS App 所需的工具。我们将分享用于部署首款空间计算 App、为现有 App 添加 visionOS 支持以及管理兼容性方面的基础知识和最佳做法。我们还将向你展示如何使用 visionOS 版 TestFlight 测试 App 并在迭代过程中收集宝贵的反馈。

深入探索如何打造适用于 visionOS 的产品

为促进协作、推动共享和提高效率而构建

共享和协作可以在 App 和游戏中为用户带来让他们感觉身处同一空间的体验,因此它是 visionOS 的核心组合部分。默认情况下,用户可以在 FaceTime 通话中与他人共享任意 App 窗口,就像在 Mac 上那样。但是当采用 GroupActivities 框架时,你能够打造新一代的协作体验。

通过了解你可以在 App 中创建的共享活动类型,开始针对 Apple Vision Pro 上的同播共享进行设计和构建。探索如何在你的体验中打造在参与者之间共享的情境,并了解如何通过支持 Spatial Persona 在 App 中实现更有意义的交互。

打造游戏和媒体体验

探索如何在 visionOS 游戏和媒体体验中打造真正令人沉浸其中的时刻。游戏和媒体都能利用全方位的沉浸体验来讲述精彩的故事并以全新的方式与用户交互。我们将向你展示可用于开始为 visionOS 构建游戏和构思叙事发展的途径。了解使用 RealityKit 有效渲染 3D 内容的途径,探索视觉和动态效果设计注意事项,并了解如何使用 Metal 或 Unity 打造完全令人沉浸其中的体验来带用户走进全新的世界。

声音也能显著提升 visionOS App 和游戏带来的体验,无论你是向按下按钮动作添加音效还是打造完全令人沉浸其中的音景。了解 Apple 设计师如何选择声音并构建音景,从而在窗口、空间容器和空间中打造富有质感的沉浸式体验。我们将分享当在空间中提供音频线索时如何通过声音来丰富 App 中的基本交互,如何让重复的声音实现多样变化,以及如何在 App 中构建悦耳的时刻。

如果你的 App 或游戏包含媒体内容,我们准备了一系列讲座来帮助你更新视频管道和打造出色的 visionOS 播放体验。了解如何扩展交付管道以支持 3D 内容,并获取有关在 App 中流播放空间媒体的提示和技巧。我们还将向你展示如何使用支持 visionOS 视频播放的框架和 API 来打造引人入胜且令人沉浸其中的体验。

在 visionOS 中运行 iPad 和 iPhone App

探索如何在 visionOS 中运行现有的 iPadOS 和 iOS App。探索 iPadOS 和 iOS App 如何在此平台上运行,了解框架依赖项,并了解专为 iPad 而设计的 App 的交互方式。当你为将现有 App 提升到全新境界做好了准备时,我们将向你展示如何针对共享空间优化 iPad 和 iPhone App 体验,并帮助你改进视觉方案。

进一步探索

当你的 App 准备就绪并能正常运行时,请探索更多方法来进一步完善用户体验。

打造网页体验

探索 visionOS 的网页功能,并了解用户如何以全新的方式体验你的 Web 内容。探索此平台的输入模型,并了解如何针对空间计算优化你的网站。我们还将分享新兴标准如何帮助塑造网页的 3D 体验,深入探讨 Safari 扩展的最新更新,并帮助你使用 Safari 浏览器的开发者功能为 Apple Vision Pro 体验进行原型设计和测试。

无论你是在网页上还是在 App 中使用“快速查看”,都应了解如何为 3D 内容、空间图像和视频等内容添加强大的预览功能。我们将分享系统呈现这些体验的不同方式,演示参与者如何拖放这些内容以在共享空间中创建新窗口,并探索如何直接在 App 中访问“快速查看”。我们还将介绍为 visionOS 中的“快速查看”创建 3D 内容的最佳做法,包括有关 3D 质量和性能的重要注意事项。