大多数浏览器和
Developer App 均支持流媒体播放。
-
开始构建用于空间计算的 App
准备好为 visionOS 开发 App 和游戏!探索构成空间计算的基本构建块:窗口、容积和空间,并了解如何使用这些元素来构建引人入胜的沉浸式体验。
资源
相关视频
WWDC23
-
下载
♪ 悦耳的器乐嘻哈 ♪ ♪ Jim Tilander: 大家好,我是 Jim, 是 RealityKit 团队的工程师。 今天,我的同事,ARKit 团队的 Christopher 将和我一起指导大家 如何开始为空间计算构建 App。 那我们开始吧! 我们很高兴能推出 本公司的空间计算新平台。 该平台在人们 较为熟悉的基础上建立, 开发者可以用来开发 App。 它提供了新颖 又令人振奋的种种可能性 可以融合真实与虚拟内容, 并利用自然输入与 您的 App 进行互动。 而且整个系统经过专门设计 旨在保护人们的隐私,使您可以安心 专注于您的 App 体验。 接下来,我将介绍基础知识, 帮助大家了解相关词汇 和空间计算的概念。 之后我们将讨论如何用不同的方法 开始构建您的 App。 然后我的同事 Christopher 将向大家介绍 如何构建您的 App,更深入地探讨 空间计算的细节。 现在我们来了解一下基本原理。 首先,我来介绍一下, 在空间计算中,什么是熟悉的 用户界面,什么是全新的用户界面。 默认情况下, App 会进入共享空间。 共享空间内各 App 并行存在, 跟 Mac 桌面上的 多个 App 一样。 通过穿透技术,人们与周围环境 保持联系。 每个 App 可以有一个或多个窗口。 这些是 SwiftUI 场景, 可以像普通 macOS 窗口那样 调整大小或重排。 这些窗口包括传统视图和控件, 还包括 3D 内容, 可让您混搭 2D 和 3D。 人们可在当前空间里根据自身喜好 重新定位窗口, 就像其所期望的那样。 空间容器元素让 App 可在设定范围内显示 3D 内容, 与其他 App 共享空间。 空间容器元素是展示 3D 内容的最佳选择, 例如棋盘游戏。 人们可在空间中重新定位空间容器, 并从不同角度观察空间容器。 空间容器元素是 SwiftUI 的场景, 可以让您用熟悉的方式 进行布局,且利用 RealityKit 的强大功能 显示 3D 内容。 有时,您可能想对 App 的 沉浸程度有更多控制…… 比如在看视频 或打游戏时集中注意力。 您可以通过打开一个专门的 Full Space 来做到这一点, 在这个空间里, 您的 App 窗口、空间容器和 3D 对象 是唯一出现在视图中的对象。 在 Full Space 里,您也可以 充分利用 ARKit 的 API。 例如,除了系统提供的手势外, 您还可以获得更详细的 Skeletal Hand Tracking, 真正将人体手部结构 融入您的体验。 您的 App 可以用不同方式 使用 Full Space。 您可以通过穿透将内容融入 现实世界,使人们与周围环境 保持联系。 在通过 RealityKit 播放空间音频和渲染 3D 时, 您可充分利用以下情况: 该设备将不断更新对房间的理解, 将视觉和声音融入 人们的周围环境,使其觉得 这些虚拟物体真的属于他们的房间。 您也可以选择渲染到 一个完全沉浸式的空间, 来填满整个视野。 这让您的 App 可以 通过个性化虚拟物体的灯光 以及选择音频特征的能力, 来灵活履行 App 的创造性意图。 这些都是空间计算的基础要素: 窗口、空间容器和空间。 这些要素为您提供了 一个灵活的工具集, 用来构建可持续沉浸感的 App。 Christopher 稍后 会有更多介绍。 现在我们已经介绍了空间计算的 基本要素,接下来探讨一下 我们与窗口、空间容器 和空间的互动方式。 在这个平台上,我们可以 简单地用手和眼睛与 App 互动。 比如,人们可以 通过注视按钮与之互动、 轻拍手指进行选择。 也可以伸出手指 在 3D 空间中实际触摸该按钮。 对于这两种互动, 有各种手势可以使用,如轻拍、 长按、拖动、旋转、缩放等等。 系统会自动检测到这些手势, 并生成触摸事件 让 App 做出反应。 手势可与 SwiftUI 良好融合。 同样的手势 API 可与 RealityKit 实体 一体式配合。 这让人们能够轻松 与您的 3D 场景元素直接互动。 例如,可以直接在这个 3D 模型上 放一面旗, 或想象一下要控制一个虚拟拉链, 或者也许您想互动并捡起 虚拟的棋子。 现在,如果您想做一个保龄球游戏 或者把人们的手 变成一个虚拟俱乐部, 就可以通过 ARKit 的 Skeletal Hand Tracking 来实现。 在这里,我们可以看到 一个例子,您可以用轻拍 把方块堆在桌子上, 然后用手把它们砸到桌子上。 这是个非常好的方式, 可以将特定 App 的 手动输入融入体验。 最后,系统会自动将来自无线键盘、 触控板和可访问硬件的输入 直接输入到您的 App 中, 而 Game Controller 框架也让您可以 添加对无线游戏控制器的支持。 协作和共同探索 是空间计算的基础之一。 我们通过同播共享和 Group Activities 框架 来实现这一目标。 和在 macOS 上一样, 人们在该平台上可共享窗口, 就像快速查看的体验一样。 当人们分享快速查看 3D 模型时, 我们会在参与者之间 同步方向、比例和动画, 让人们在不同地点 也可轻松合作。 当人们在其空间中显示的物体上合作 并且该物体是他们实际指向的物体, 同播共享会话中的 每个人都有相同的体验 是至关重要的 这使得我们可以参照自然习惯 比如针对物体的手势 而且强化了身体接触的感觉。 我们已经在系统中 加入了共享环境的概念。 系统会为您管理这些共享内容, 帮助确保同播共享会话中的 参与者都能以同样的方式 体验内容。 您可以使用 Spatial Persona Templates 进一步个性化 如何让人们体验您的内容。 如需了解更多信息,请观看我们关于 为该平台设计和构建空间 同播共享体验的课程。 鉴于设备对周围环境和人类 了解详尽,我们设置了很多架构 来保护人们的隐私。 我们来深入了解一下。 此平台的设计秉承隐私权 这一核心原则,同时让您作为开发者 能轻松利用 API 来获取该设备的诸多功能。 系统不允许 App 直接访问 来自传感器的数据信息, 但系统会为您访问 并为 App 提供 事件和可视化提示。 例如,系统知道在 3D 空间中 某人的眼睛位置和手势, 并将其作为触摸事件传送。 此外,当视图成为注意力焦点时, 系统会呈现悬停效果, 但并不告诉 App 这个人正在看哪里。 在许多情况下,系统提供的行为 足以让您的 App 对互动作出反应。 在您确实需要访问 更敏感信息的情况下,系统会先征求 用户的许可。 例如,请求用户允许访问 场景理解,用来检测墙壁和家具, 或访问 Skeletal Hand Tracking, 将自定义互动引入您的 App。 现在我们已经看到了一些 可用于 App 的功能, 接下来让我们继续探索 如何开发这些 App。 一切都要从 Xcode 开始, 这是 Apple 的集成开发环境。 Xcode 为开发 App 提供了一套完整的工具, 包括项目管理支持、 UI 的可视化编辑器、 调试工具、模拟器 等其他诸多工具。 最重要的是,Xcode 还配备了 SDK 平台,可提供一套完整的框架 和 API,可用于开发 App。 如果您的源文件包含 一个 SwiftUI 预览提供商, 预览画布将 在 Xcode 中自动打开。 预览画布已扩展到支持 3D, 让您能够可视化场景的 RealityKit 代码, 包括动画和自定义代码。 这样可以缩短迭代时间, 在您编辑实时代码时为 App 找到正确的外观和风格, 并直接看到变化和调整的结果。 我们在这做个实验吧, 通过改变轨道速度和卫星的大小 看看卫星是如何绕地球运行的。 请注意,预览会反映代码的变化, 我们可轻松看到代码中 快速实验的结果。 Xcode Previews 还有一个对象模式, 可以快速预览 3D 布局, 例如,看看您的布局是否 放置在视图范围内。 这对于构建与传统 UI 和全新 3D 视觉效果 紧密集成的场景非常有用。 Xcode Preview 为您 提供了一个绝妙的方法, 在您运行 App 之前 即可获得正确布局。 模拟器是测试您 App 互动性的 绝佳方法。 您可用键盘、鼠标 或兼容的游戏控制器 在场景中移动和查看。 而且,还可通过模拟系统手势, 轻松与您的 App 互动。 模拟器带有三个不同的模拟场景, 每个场景都有白天 和夜晚的灯光效果。 这样在不同条件下 都能轻松看到您的 App。 借助模拟器来运行和调试 大多数 App,是一个不错的方法, 也是在非常可预测的环境中 快速迭代开发的 绝佳方式。 我们还扩展了 Xcode, 以便在调试时 支持许多运行时可视化, 从而帮助您通过简单地查看场景 就能快速理解和跟踪错误。 这里我们有可视化平面评估, 包括这些平面的语义含义 和场景中的碰撞形态。 在 Xcode 的调试器中, 可轻松切换您想关注的可视化内容。 这些可视化内容在模拟器和设备中 都能起到很好的作用。 当需要提高 App 性能 和响应能力时,我们还有像 Instruments 的常见工具。 Instruments 是 Xcode 中提供的 一款强大的性能分析工具。 您可以使用 Instruments 来为运行的 App 提供可具操作性的分析。 而在空间计算方面, Instruments 15 包含一个新模板 RealityKit Trace, 可为平台上的新行为 提供更多、更深入的分析。 RealityKit Trace 模板有新工具, 让开发者能够了解 其 App 的图形处理器、CPU 和系统功率影响, 并确定性能热点。 您可轻松观察和理解框架瓶颈, 并追溯到重要度量, 如提交的总三角形或模拟的 RealityKit 实体数量。 这样可以让您快速发现并解决 潜在的性能问题。 如需更多细节,请观看 课程“了解 RealityKit Trace”。 我们还引入了一个新的开发者工具 Reality Composer Pro。 该工具让您能够为 App 预览 和准备 3D 内容。 Reality Composer Pro 可帮助您了解所有资源 以及这些资源在场景中的配合情况。 我们在 RealityKit 添加了新功能颗粒, 可以用 Reality Composer Pro 中的工作流程 来编写和预览颗粒。 在您的场景中添加颗粒 可提供转移、生机 和无限的可能性。 可以在短时间内建立 云、雨和火花等效果。 可以轻松地在场景中添加音频 并将音频与物体联系起来。 您还可以在空间上预览音频, 这会将您整个场景的形状和背景 都纳入预览中。 大多数虚拟对象 将使用 RealityKit 基于实物的材料 来代表各种现实世界的材料。 RealityKit 使用传感器数据 将现实世界的灯光信息 输入到这些材料中, 并将这些材料 与人们的周围环境相结合。 RealityKit 还有一些额外的标准材料 可供您的 App 在常见场景中使用。 若有非常具体的需求, 如传达创造性意图, 您可在 Reality Composer Pro 中 使用开源标准的 MaterialX 来编写自定义材料。 可通过一个便于使用的 节点图来完成, 无需接触任何代码, 并可直接在视口中快速预览。 如需了解更多信息,请观看课程 “了解 Reality Composer Pro 中的材料”。 在对您的 3D 内容感到满意后, 可将您的场景发送到设备上, 直接测试内容。 这对迭代时间非常有利, 因为您甚至无需 构建 App。 如需了解更多信息,请观看课程 “了解 Reality Composer Pro”。 另一个可供选择的 方案是 Unity。 Unity 为您带来了 编写空间计算 App 的能力, 这些 App 有熟悉的工作流程, 并且无需任何插件。 您可引入现有内容, 为新的沉浸式体验提供动力。 如需了解更多信息,请观看介绍 如何使用 Unity 来编写沉浸式 App 的课程。 现在我们了解了一些基本概念 和可用的工具, 接下来再看看如何开始构建 App。 有两种开始构建的方式, 一种是从头开始设计一款 全新的空间 App, 一种是把已有的 App 引入这个新的空间平台。 我们来探讨一下 如何构建新的 App。 从头开始设计一款空间 App, 可以帮助您快速接受空间计算的 独特新功能。 您可以用平台上的 App 新模板 来开始工作。 该 App 模板 有两个新的重要选项。 首先,您可以将 “初始场景类型”选择为 “窗口”或“空间容器”。 这就为您生成了初始代码, 以后再添加其他场景也很容易。 第二个选项让您可以为 App 添加一个沉浸式空间入口。 默认情况下,您的 App 将启动到共享空间。 如果您将“沉浸式场景类型” 选择为“空间”, 第二个场景就会 被添加到您的 App 中, 同时还有示例按钮显示如何进入到 该 Full Space。 完成辅助工作后, 您会看到一个在 SwiftUI 中的初始工作 App, 该 App 会显示常见按钮 与用 RealityKit 渲染的 3D 物体混在一起。 如需了解更多信息,请观看课程 “开发您的第一款沉浸式 App”。 我们也在发布代码样本, 每个样本都介绍了不同主题, 以便您快速上手。 Destination Video 展示了如何建立 共享的、沉浸式播放体验, 其中包含了 3D 视频和空间音频。 以 Happy Beam 为例子, 您可以利用沉浸式空间 来创建游戏, 包括自定义手势, 以便与朋友一起打造 一款有趣的游戏。 Hello World 则展示了如何用 3D 地球仪在不同的 视觉模式之间进行转换。 Christopher 稍后会 详细介绍 Hello World。 在该平台上从头开始 构建和设计 App, 可让您更轻松地理解 空间计算的概念。 不过,您可能已有现成的 App, 并想将其引入空间计算。 从一开始,iPad 和 iPhone 上的 App 外观和风格就很不错。 如果您的 App 支持 iPad, 该版本将优先适用于 iPhone, 尽管也完全支持 仅适用于 iPhone 的 App。 我们再来看看 模拟器中显示的菜谱 App。 虽然这个平台有自己的暗黑风格, 但 iPad 和 iPhone 的 App 却保留了浅色模式的风格。 为便于使用,窗口可改变大小, 并且可以处理 App 的旋转, 让您可以使用不同布局。 如需了解更多信息,请观看课程 “在共享空间运行 iPad 和 iPhone App” 来了解系统的内置行为、 功能差异以及 如何使用模拟器进行测试。 然而,运行现有的 iPad 或 iPhone App 只是开始。 在您的 Xcode 项目中, 只需点击一下, 即可轻松为该平台添加一个目标。 之后可轻松选择目标设备, 重新编译并运行。
重新编译后,即可得到原生间距、 尺寸和重新布局。 您的窗口和材料都将自动转为 平台的外观和风格, 确保在任何光线条件下的 可识别性, 而且您的 App 还可以利用内置功能, 如突出您的自定义控件。 现在,Christopher 将向我们展示如何利用 我们目前所涉及的概念 进一步构建我们的 App。 Christopher Figueroa: 谢谢,Jim。 我将向各位介绍如何结合 您之前学过的元素,来构建 App。 我们先从 Hello World 开始,探索一些 可以集成到 App 中的强大功能。 现在开始示例操作。 在模拟器中运行 App 后, Hello World 会在我们面前启动一个进入 共享空间的窗口。 这与 SwiftUI 中的 窗口外观类似, 其中包含不同元素, 如文本、图像和按钮等。 使用轻拍手势 可在 App 中进行导航。 请观察一下我们的新视图 是如何嵌入 3D 内容的。 现在,SwiftUI 和 3D 内容 可以一体式协作。 回到主窗口,选择“行星地球”, 就会进入一个新视图, 随即显示一个新元素。这就是空间容器, 其中包括地球的 3D 模式, 以及一些用户界面元素。 通过移动窗口栏,可在周围任何地方 调整空间容器位置。
再次回到主窗口, 选择“查看外层空间”, 随即会出现一个 进入太阳系的邀请。
从这里我们可以 进入空间,这里显示的是 “完全” 的沉浸式风格。 我们的示例渲染了行星地球, 并使穿透变暗, 让我们能够专注于内容, 不受周围环境的干扰。 现在我们已经看到了实际效果, 我们再来分解一下 Hello World 的一些功能, 并向您展示如何 在 App 中使用这些概念。 正如前面 Jim 所介绍的, 这里有多种元素: 窗口、空间容器和空间。 可以把它看作是一个频谱, 您的 App 可以用它来 向上和向下弯曲, 这取决于在特定时刻 怎样最恰当地使用您的 App。 您可以选择在共享空间中展示 一个或多个窗口, 让人们更多地参与进来。 他们可以看到穿透,并可选择 让其他 App 并排分布。 或者……您可以选择让 App 完全接管这个空间, 从而提升沉浸水平。 在设计空间计算 App 时, 找到最适合 App 体验的元素, 并在元素之间进行灵活调整, 是一个重要的考虑因素。 接下来,我们进一步了解 如何使用窗口 作为体验的一部分。 窗口是 App 的起点。 窗口是通过 SwiftUI 使用场景来构建的, 且包含许多传统视图和控件。 该平台上的窗口 支持混合 2D 和 3D 内容。 这表示您的 3D 内容 可以和 2D 用户界面 一起在窗口中展示。 可以在空间上 重新定位窗口的大小和位置。 人们可以根据自己的喜好来安排。 我们继续讲解示例。 在 Hello World 中, 内容视图包括 SwiftUI 的图像、 文本和按钮,以及行为召唤, 从而获取更多沉浸式内容。 创建窗口和在场景中 添加窗口组一样,都可轻松完成。 在窗口组中,我们将展示内容视图。 内容视图可添加 3D 内容, 从而给您的 App 带来新的深度维度。 要做到这一点, 可以使用新 Model3D 视图。 Model3D 类似于图片, 能让您的 App 轻松加载 和显示 由 RealityKit 渲染的 精美 3D 内容。 将 Model3D 加入您的视图中, 我们通过传递卫星模型的名称 来初始化 Model3D。 有了这个名称,Model3D 会找到并加载模型, 并将模型放入您的视图层次中。 现在,这个窗口已 将卫星嵌入到视图中, 可以看到从 Z 轴出来的卫星, 为您的 App 添加了 一个新的深度维度。 我们已经添加了一个卫星, 现在可以添加互动了。 互动从根本上来说 是由 SwiftUI 提供的 系统内置功能。 SwiftUI 提供了 您在 Apple 平台上 已经熟悉的手势识别器, 如 Tap、onHover 和 RotateGesture。 SwiftUI 还提供 新的手势识别器, 这些手势 是为 3D 互动而专门制作, 比如在 3D 空间中的旋转、 对 3D 物体的轻拍等等。 让我们看一下实现 与卫星互动的代码。 我们将启用一个空间轻拍手势, 这样我们就可以抓住并移动卫星。 从 Model3D 开始, 我们现在可以添加一个手势了。 在里面添加一个针对 卫星实体的 DragGesture。 然后我们可以使用从更新的闭包中 传递过来的值来移动卫星。 我们来看看效果如何。 回到我们的卫星视图中, 卫星已经过渲染, 注意,DragGesture 让我可以点击并拖动模型, 随着我的互动而移动。 和我们刚才看到的一样, 用Model3D 可轻松混合 2D 和 3D 内容。 这些是您可以用窗口做到的。 然后我们看看 另一种元素类型:空间容器。 我们看看空间容器可以做些什么。 空间容器是窗口的扩展, 提供类似的功能性。 空间容器是窗口的新风格, 该风格很适合 3D 内容。 空间容器可承载 多个 SwiftUI 视图, 并包含您的 2D 和 3D 内容。 虽然在 Full Space 中 可以使用空间容器, 但空间容器实际上是为共享空间建立的, 因此内容必须保留在空间容器范围内。 我们看看如何 在您的场景里添加空间容器。 需要从新建窗口组开始, 将 windowStyle 设置为 volumetric。 然后您需要给它 一个 defaultSize, 其属性包括宽度、高度和深度。 体积的单位可以用点或米来指定。 我们看看模拟器中的运行。 当应用软件呈现时, 空间容器将放置于人的面前。 该空间容器有我们指定的尺寸, 且由平台控制: 展示我们 App 名称的 App标题栏, 这样就可以轻松识别出 这一空间容器属于哪个 App; 可定位空间容器的窗口栏; 还有点击后可暂停 App 并关闭空间容器的 关闭按钮。 目前我们的空间容器 渲染了地球的 3D 模式, 但您可能想开始增加更多内容 和不同行为。 想做到这一点, 您可以采用 RealityView 作为 App 的一部分。 RealityView 是可添加到场景的新视图, 通过该视图, 可实现在 SwiftUI 内直接管理 任何数量的实体。 SwiftUI 和 RealityView 让您可通过连接 SwiftUI 的 管理状态和实体属性, 轻松整合您的 App。 这样可以更轻松地 用 App 数据模型中的 真实源文件来驱动 3D 模型的行为。 通过 RealityView 提供的转换功能, 坐标空间之间的转换就可轻松进行, 而且 RealityView 提供了 一种通过附件将 SwiftUI 元素 定位在 3D 场景内的方法。 我们来看看 如何在 RealityView 里 使用附件。 我们要使用的 RealityView 初始化定式 需要三个参数:一个制作闭包, 一个更新闭包,以及一个 附加的 ViewBuilder。 制作闭包让您能够创建实体 并将其附加到根实体上。 而每当视图状态发生变化时, 就可调取更新闭包。 最后,附件闭包 是我们添加 SwiftUI 视图的 地方,带有标签属性, 该属性让 RealityView 可将我们的视图 转化为实体。 现在我们通过一个例子来了解 如何使用 RealityView 的附件。 添加附件就像把 SwiftUI 视图 放在 RealityView 的 附件闭包中一样简单。 我们用这个美味糕点的图标 来代表我们 3D 地球仪上的位置。 对于每个附件, 您必须添加一个标签, 用于给附件命名。 我给这个命名为“pin”。 为了显示这个附件,我将把它添加到 我的 RealityView 的 内容中。 我将在更新闭包中,通过将其添加到 场景的根实体中来实现这一点。 这里我们可以看到之前做的附件, 在我最喜欢的面包上方的 地球仪上渲染。 正如我们看到的, 使用 RealityKit 可以发挥强大的功能, 如 Model3D、RealityView、 附件和其他等等。 这些都可轻松集成进您的 App。 而这些都仅是 RealityKit 功能的 一小部分。 如需了解更多信息,建议您观看课程 “使用 RealityKit 来构建空间体验” 以及“利用 RealityKit 增强空间计算 App”。 我们再回顾一下之前讲到的内容。 空间容器是理想的 2D 和 3D 内容的包装器。 空间容器是为共享空间而建立的, 可与窗口共存, 并以指定尺寸为界限。 接下来我们深入了解 最后一种类型的元素:空间。 您的 App 打开 一个专门的 Full Space 后, 系统会隐藏所有其他 App, 只有您的 App 可见。 现在您可以将 App 的 窗口、空间容器、内容 放置于您身边的任何地方。 有了 ARKit 和 RealityKit, 您的虚拟内容 甚至还可以和周围环境互动。 您可以在房间内扔一个虚拟球, 看着球从墙上弹起后在地板上滚动。 添加了手部跟踪之后, 您就可以建立自定义手势和互动, 或将内容与人的手相关联。 其中许多功能都来自 ARKit。 要深入了解并学习如何在 App 中 使用这些功能,请观看课程 “了解适用于 空间计算的 ARKit” 有了空间,您的 App 还可以提供 不同层次的沉浸感,这取决于创建时 选择了哪种风格。 刚才 Jim 谈到了 在 Full Space 中可用的 沉浸感的范围。 现在我们进一步了解一下 如何在您的 App 中 添加更多沉浸感。 沉浸式风格是一个参数, 可以在您的 Full Space 中传递。 其中有两个基本风格: 混合风格和完整风格。 混合风格将您的 App 内容 分层在穿透上面。 完整风格隐藏了穿透, 只显示您的内容。 您也可以选择渐进式 将二者结合起来。 该风格在初始阶段允许一些穿透, 但人们可通过转动 位于设备顶部的数码表冠 来改变沉浸程度, 直到完全沉浸。 我们回到示例中 继续探索沉浸式风格。 我将从混合式风格 开始看看是什么效果。 因为 Full Space 是 SwiftUI 的场景, 我可以用 RealityView 来展示地球。 这是从高空轨道看地球的视图…… 这是我在 App 里展示的场景。 请注意我其实没有指定沉浸式风格。 这是因为当您创建了 一个沉浸式空间, SwiftUI 在默认情况下 假定为混合风格。 我们也可通过添加不同的沉浸式风格 来让 App 完全沉浸。 这次我会将沉浸式风格 选为“完全”沉浸。 在 ImmersiveSpace 的 末端添加沉浸式风格 非常简单。 我们将沉浸式风格存储在状态变量中 然后将类型选为“完全”。 因为我们想让人们能选择 何时进入沉浸式体验, 所以有必要添加一个按钮让其决定 是否要进入这种沉浸式风格。 现在我们来看看 沉浸式风格的实际情况。 回到我们的 App 中, 我已经把 Hello World 从单一的窗口变成了完全沉浸式的, 让我们可以从任何角度查看地球。 而这仅仅是开始, 您还能用空间 App 构建 很多内容。 我们看看您还可以在这里做些什么。 在本课程中,我们介绍了基本原理: 如何开始使用, 并为各位介绍了 构建一个 App 的基础知识。 我们还有一些课程可以带您了解更多 关于空间设计的准则, 或学习关于 用 SwiftUI 和 RealityKit 构建 App, 或如何开始创造 3D 内容。 通过空间计算,您的 App创造 就可以通过您的聪明才智, 大胆进入新颖且令人振奋的领域。 感谢观看! ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。