当前位置: 首页 > 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

相关文章:

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

安装 截至目前visionOS还未在Xcode稳定版中开放,所以需要下载​​Xcode Beta版​​。比如我们可以下载Xcode 15.1 beta 2,注意Xcode 15要求系统的版本是macOS Ventura 13.5或更新,也就是说2017年的MacBook Pro基本可以勉强一战,基…...

java常见数值类型取值范围/ int short long BigInteger取值范围

文章目录 一、各类型取值范围 一、各类型取值范围 以下整理java中常用的数值类型取值范围。 类型字节大小最小值最大值取值范围byte8bit-128127-128到127short16bit-2 15 ^{15} 152 15 ^{15} 15-1-32768-32767int32bit-2 31 ^{31} 312 31 ^{31} 31 -1-2,147,483,648 到 2,147…...

echarts产品日常奇怪需求

设置最小刻度导致好多小数,限制两位 yAxis 指定的y轴设置 axisLabel,可以格式化显示 文档地址:https://echarts.apache.org/zh/option.html#yAxis.axisLabel.formatter yAxis: [{type: value,name: 利率,position: right,alignTicks: true,mi…...

CSDN文章保存为MD文档(一)

免责声明 文章仅做经验分享用途,利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!!! import os import re i…...

【tomcat】java.lang.Exception: Socket bind failed: [730048

项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ�� 13, 2023 9:33:26 ���� org.apache.coyote.AbstractProtocol init ����: Fa…...

什么是高防IP?有什么优势?怎么选择高防IP?

在当今的互联网环境中,分布式拒绝服务(DDoS)攻击已经成为一种常见的安全威胁。这种攻击通过向目标服务器发送大量的无效流量,使其无法处理正常的请求,从而达到迫使服务中断的目的。作为一个用户,你是否曾遇…...

不存在类型变量 A, T 的实例,使 Collector<T, A, List<T>> 符合 Supplier<R>

报错信息 原因: 不存在类型变量 A, T 的实例&#xff0c;使 Collector<T, A, List<\T>> 符合 Supplier<\R> 来源 测试Stream流的map方法&#xff0c;做算法习惯基本类型定义数组。 map方法:Stream API的一部分。允许以一种声明式的方式处理数据&#xff0c…...

千兆光模块和万兆光模块的供应链管理

随着网络通信技术的不断发展&#xff0c;千兆光模块和万兆光模块已逐渐成为现代网络建设中不可缺少的组成部分。它们在云计算、数据中心、大规模机房以及企业内部网络等领域广泛应用&#xff0c;已经成为大家熟知的产品。 千兆光模块和万兆光模块的工作原理基本相同&#xff…...

pytorch训练出现的bug

训练过后发现.csv文件左侧出现了几列unname和一列0&#xff0c;1&#xff0c;2。这个时候在训练就会从unname那一列开始训练。我们需要把这几列删除&#xff0c;之后再重新训练 问题应该是执行完了这个语句过后就会出现了。 执行完后&#xff0c;记得删。...

【AGC】集成AGC服务上架应用市场审核问题

【关键字】 AGC、应用市场、审核 【问题描述】 集成了AGC服务&#xff0c;上架到应用市场不通过&#xff0c;检查发现是com.huawei.secure.android.common.ssl.util.c.doInBackground 存在获取安装列表行为。 已经按照sdk 设置了&#xff0c;但是检测还是有授权前去获取安装列…...

element emitter broadcast向下广播 dispatch向上分派

emitter 项目使用element的emitter.js&#xff0c;做个使用记录 function broadcast(componentName, eventName, params) {this.$children.forEach(child > {const name child.$options.name;if (name componentName) {child.$emit.apply(child, [eventName].concat(para…...

基于 Modbus 的工业数据采集、控制(part 2)

基本处理流程 服务器 parse_and_process(char * input)//input :post请求发送的正文 {...// 请求 modbus 数据else if(strstr(input, "modbus_get")){return handle_get(sock, input);}// 控制 modbus 设备else if(strstr(input, "modbus_set")){return …...

vue前端项目如何配置后端项目的请求地址

在 Vue 前端项目中配置后端项目的访问地址可以通过修改项目的配置文件来实现。Vue 常用的配置文件是 vue.config.js&#xff0c;你可以按照以下步骤进行配置&#xff1a; 在 Vue 项目的根目录下&#xff0c;创建或编辑 vue.config.js 文件。 在 vue.config.js 中&#xff0c;可…...

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 LoRa联盟 LoRa联盟&#xff1a;LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书&#xff1a;https://www.lora-alli…...

Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复

一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…...

在线视频课程教育系统源码/网课网校/知识付费/在线教育系统/在线课程培训系统源码

源码简介&#xff1a; 在线视频课程教育系统源码&#xff0c;作为网课/网校/知识付费/在线教育系统&#xff0c;它有文章付费阅读在线点播自动发货付费阅读VIP会员系统等功能。它是实用的在线课程培训系统源码。 发货100-在线视频课程教育系统&#xff0c;它是一款功能实用的…...

程序员护城河:保障系统安全与网络稳定的不可或缺力量

引言&#xff1a; 在当今数字化时代&#xff0c;计算机和互联网的广泛应用使得程序员的角色变得越来越重要。作为保障系统安全与网络稳定的关键力量&#xff0c;程序员需要具备一系列的基本能力&#xff0c;同时还需掌握一些专业技术和策略&#xff0c;以确保系统运行的安全性…...

html属性值可以不用引号吗,实例验证

html属性值可以不用引号 HTML元素的属性值可以不适用引号来包裹&#xff0c;浏览器一样可以将其进行渲染。不过&#xff0c;如果这样写HTML的代码的话&#xff0c;属性与属性值之间需要用空格来进行隔开&#xff0c;避免后面的属性变成前面属性的属性值。 提示&#xff1a;虽…...

angular 实现模块共享

angular 实现共享模块 新建共享模块: ng g m material material.module.ts import {NgModule } from @angular/core; import {OverlayModule } from @angular/cdk/overlay; import {CdkTreeModule } f...

带记忆的超级GPT智能体,能做饭、煮咖啡、整理家务!

随着AI技术的快速迭代&#xff0c;Alexa、Siri、小度、天猫精灵等语音助手得到了广泛应用。但在自然语言理解和完成复杂任务方面仍然有限。 相比文本的标准格式&#xff0c;语音充满复杂性和多样性&#xff08;例如&#xff0c;地方话&#xff09;,传统方法很难适应不同用户的…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...

【java】【服务器】线程上下文丢失 是指什么

目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失&#xff1f; 直观示例说明 为什么上下文如此重要&#xff1f; 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程&#xff0c;代码应该如何实现 推荐方案&#xff1a;使用 ManagedE…...

用 FFmpeg 实现 RTMP 推流直播

RTMP&#xff08;Real-Time Messaging Protocol&#xff09; 是直播行业中常用的传输协议。 一般来说&#xff0c;直播服务商会给你&#xff1a; ✅ 一个 RTMP 推流地址&#xff08;你推视频上去&#xff09; ✅ 一个 HLS 或 FLV 拉流地址&#xff08;观众观看用&#xff09;…...