当前位置: 首页 > news >正文

visionOS空间计算实战开发教程Day 1:环境安装和编写第一个程序

安装

截至目前visionOS还未在Xcode稳定版中开放,所以需要下载​​Xcode Beta版​​。比如我们可以下载Xcode 15.1 beta 2,注意Xcode 15要求系统的版本是macOS Ventura 13.5或更新,也就是说2017年的MacBook Pro基本可以勉强一战,基本上还是推荐使用M系列芯片的电脑进行开发。

Xcode 15.1 beta 2

创建项目

安装好SDK后,如果一切正常就可以开始创建visionOS项目了,在点击Create New Project..后会看到一个专属的visionOS的标签页,如下图所示:

新建visionOS项目

接下来和普通的iOS项目并没有太大区别,填入相关信息:

visionOS创建项目信息填写

Initial Scene有两个选项:Window和Volume,基本的区别是一个二维的,一个是三维的,后者添加多了一个深度信息。Immersive Space在将Immersive Space Render选择为RealityKit时会有三个选项:Mixed、Progressive和Full。这里我们都保持默认选项。

有些新手读者可能会问,如果在原有项目中基础上新增一个visionOS的版本该怎么做呢?一般公共部分可以抽取到一个​​shared​​的文件夹,然后在原项目中新增一个Target即可:

第一个程序

创建完项目项目文件结构可以参见下图,打开​​ContentView.swift​​​可以看到默认已为我们创建了一个包含有初始3D模型和​​Hello, world!​​文本的界面。

visionOS初始开发界面

项目的入口文件​​visionOSDemoApp.swift​​(因本项目命令为visionOSDemo)与iOS项目并没有区别。

import SwiftUI@main
struct visionOSDemoApp: App {var body: some Scene {WindowGroup {ContentView()}}
}

我们的第一个程序就是修改​​ContentView.swift​​​,因为这里并不需要使用RealityKit和3D素材,只需要导入​​SwiftUI​​即可。

Day 1: Hello visionOS

struct ContentView: View {var body: some View {VStack {Text("Hello, visionOS!")}}
}

在模拟器中的展示效果如下:

Hello, visionOS!

visionOS内置有多个模拟场景(Kitchen(Day)、Kitchen(Night)、Living Room(Day)、Living Room(Night)、Museum(Day)和Museum(Night)),可通过模拟器的右上角或预览界面的左下角进行切换:

visionOS模拟场景

 其它相关内容请见​​虚拟现实(VR)/增强现实(AR)&visionOS开发学习笔记​​

参考资料:https://github.com/satoshi0212/visionOS_30Days

相关文章:

  • 自动驾驶相关
  • 【JavaEE初阶】计算机是如何工作的
  • HarmonyOS ArkTS List组件和Grid组件的使用(五)
  • 【开源】基于微信小程序的音乐平台
  • unity DontDestroyOnLoad后跳转场景后不会出现重复物体
  • linux rsyslog综合实战2
  • 没收到Win11 23H2正式版的推送怎么升级到23H2
  • Android 10-13鼠标右键返回功能适配
  • 观察者模式的运用——消息队列
  • 代码随想录算法训练营第三十一天| 455 分发饼干 376 摆动序列 53 最大子数组和
  • 探索 Material 3:全新设计系统和组件库的介绍
  • js进阶笔记之构造函数
  • 如何在 ASP.NET Core 中使用 Quartz.NET
  • adb server version (19045) doesn‘t match this client (41); killing.的解决办法
  • 华为ac+fit漫游配置案例
  • 【347天】每日项目总结系列085(2018.01.18)
  • 77. Combinations
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • C++入门教程(10):for 语句
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript服务器推送技术之 WebSocket
  • java正则表式的使用
  • Python 反序列化安全问题(二)
  • 分类模型——Logistics Regression
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 记录一下第一次使用npm
  • 简单易用的leetcode开发测试工具(npm)
  • 力扣(LeetCode)357
  • 聊聊flink的TableFactory
  • 算法-插入排序
  • 函数计算新功能-----支持C#函数
  • ​Spring Boot 分片上传文件
  • #pragam once 和 #ifndef 预编译头
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (ibm)Java 语言的 XPath API
  • (solr系列:一)使用tomcat部署solr服务
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (算法二)滑动窗口
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)Windows2003安全设置/维护
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET BackgroundWorker
  • .net core 6 redis操作类
  • .NET MVC 验证码
  • // an array of int
  • /proc/vmstat 详解
  • @TableLogic注解说明,以及对增删改查的影响
  • @Transactional 竟也能解决分布式事务?
  • [ Linux ] Linux信号概述 信号的产生