Unity vision pro模拟器开发教程-附常见问题解决方案

news2024/9/27 10:22:28

前言

庄生晓梦迷蝴蝶,望帝春心托杜鹃

废话

去年苹果发布会上,推出了Vision Pro这一款XR产品。并且宣布Unity作为其主要合作伙伴,负责开发XR的开发产品。
这消息一出,当晚Unity的股价直接被熔断。产品发布之后,一直等到最近Vision Pro的产品开始正式发布,并且Unity的开发套件陆续发布,也让我们见到了Vision Pro的庐山真面目。
我相信有很多小伙伴都想去尝试Vision pro的开发,但是碍于Vision Pro的高昂的成本,迟迟没有行动。还好Apple给我们提供了Vision Pro Simulator。使得我们可以在近乎0成本的平台上进行开发。

准备

  • M芯片的苹果电脑, M1,M2都可以,Pro和Air都行。不要以开发为借口升级电脑。
  • Unity 2022.3以后的LTS版本。
  • Unity Pro License
  • Mac os 14以上,Xcode 15以上。

注意,需要Unity Pro授权。这一步你可以找你的朋友借,或者找官方买。

开始开发

下载Unity

一开始开发,建议直接选择最新的发行版。比如在Hub中直接选择最新的版本,点击install。注意版本选择,M芯片的Mac,只支持旁边有SILICON图标的版本。
请添加图片描述
在下载时选择Vision Pro Support(Experimental)和IOS Support。后面一个我没有测试不选有没有问题。不过多装一点没有错。

请添加图片描述

Start From Template

最好的入门就是模仿。Unity提供了一个Vision Pro的项目模板,解压之后,你会发现这个模板就是一个Unity项目。本节尾有下载链接。

请添加图片描述

有了Unity工程还不简单,打开UnityHub,然后选择Open。选择我们刚才解压的文件夹。

请添加图片描述请添加图片描述

注意原项目是用2022.3.18f1打开的,这里用其他2022.3版本打开都可以。同时c后缀的也没有问题。
请添加图片描述
这里我用的2022.3.17f1c1版本。

请添加图片描述

模板的好处是,所有的配置都提前配置好了。打开项目之后可以看到在Project Settings中已经有Vision pro的配置选项。并且XR Plugin-in Management的窗口中, Apple VisionOS已经勾选。
请添加图片描述
选择场景,并在Build界面中选择并打包。
请添加图片描述

Template的下载地址:https://download.csdn.net/download/u011618339/89008430

First Vision Pro Project

在Hub中选择新项目,然后选择3D URP模板创建项目。Vision pro目前支持URP渲染管想。
请添加图片描述
打开Project Setting,选中XR Plugin Management,选择Install XR Plugin Management。
请添加图片描述
勾选Apple VisionOS,此时Unity会自动下载Vision 的支持插件。
请添加图片描述
如果其中遇到了提示安装插件窗口,直接同意即可。切换平台,开始打包。
请添加图片描述

Run on Simulator

打开Unity发布的Xcode工程。在发布的Destination上选择Apple Vision Simulator。如果没有模拟器,那么可能是你没有创建。如果创建了之后也没有,那么可能是错误,请参考下方的问题2.

创建模拟器

选择发布的Destination,点击下方的Manage Run Destinations。
请添加图片描述
在弹出窗口中点击Simuation选项卡。并点击左下角的+。创建模拟器。
请添加图片描述

发布到模拟器

选择我们已经创建好的Apple Vision Pro Test。并点击左侧的运行。
请添加图片描述
注意,如果要发布需要使用付费的开发者账号,因此本教程不支持发布。一般在打包的时候会遇到问题二、三,见后面的解决方案。
点击运行,编译完成之后,将会看到模拟器中运行的程序。

Enjoy your first vision app。

请添加图片描述

问题总结

有些朋友在开发的时候,肯定会遇到各种问题,因此我会整理一些我在开发的时候遇到的问题,帮助大家。如果大家遇到不同的问题,可以留言,我会抽空为大家解释,也欢迎有解决方案的朋友一起回答。

问题一、打包之后发现模型丢失

查看模型的shader是否是urp的。

问题二、打开Xcode之后,明明下载了模拟器,但是却没有模拟器出现。

打包Unity的时候在Player Setting中在Target SDK中选择Simulator SDK。
请添加图片描述

问题三、编译提示/Users/unity_arm_mac/Project/Tutorial/visionOSTemplate-2/build/MainApp/UnityPolySpatialAppDelegate.swift:1:8 No such module ‘UnityFramework’

参考问题二,可能是Unity的Build 设置错误了。

问题四 编译问题 Library not found for -lGameAssembly

参考问题二

总结

从个人体验来说,Apple Vision Pro确实是一款跨时代的产品,但肯定不是颠覆性的产品。本教程也只是总结了在开发过程中遇到的坑。如果大家有兴趣,欢迎点赞,收藏,关注。如果喜欢的人多,我继续出Vision pro开发入门教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1538909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度强化学习(九)(改进策略梯度)

深度强化学习(九)(改进策略梯度) 一.带基线的策略梯度方法 Theorem: 设 b b b 是任意的函数, b b b与 A A A无关。把 b b b 作为动作价值函数 Q π ( S , A ) Q_\pi(S, A) Qπ​(S,A) 的基线, 对策略梯度没有影响: ∇ θ J …

实例:NX二次开发使用链表进行拉伸功能(链表相关功能练习)

一、概述 在进行批量操作时经常会利用链表进行存放相应特征的TAG值,以便后续操作,最常见的就是拉伸功能。这里我们以拉伸功能为例子进行说明。 二、常用链表相关函数 UF_MODL_create_list 创建一个链表,并返回链表的头指针。…

Codeforces Round #936 (Div. 2)B~D

1946B - Maximum Sum 可以想到,每次都将最大连续子序列放到该子序列的最后,也就是每一轮都能将最大连续子序列倍增一次填到数组中,最终求结果 // Problem: B. Maximum Sum // Contest: Codeforces - Codeforces Round 936 (Div. 2) // URL: …

【Flink】Flink 中的时间和窗口之窗口其他API的使用

1. 窗口的其他API简介 对于一个窗口算子而言,窗口分配器和窗口函数是必不可少的。除此之外,Flink 还提供了其他一些可选的 API,可以更加灵活地控制窗口行为。 1.1 触发器(Trigger) 触发器主要是用来控制窗口什么时候…

算法系列--动态规划--子序列(2)

💕"你可以说我贱,但你不能说我的爱贱。"💕 作者:Mylvzi 文章主要内容:算法系列–动态规划–子序列(2) 今天带来的是算法系列--动态规划--子序列(2),包含了关于子序列问题中较难的几道题目(尤其是通过二维状…

uni-app打包证书android

Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。 Android证书的生成是自助和免费的,不需要审批或付费。 可以使用JRE环境中的keytool命令生成。 以下是windows平台生成证…

springboot实现文件上传

SpringBoot默认静态资源访问方式 首先想到的就是可以通过SpringBoot通常访问静态资源的方式,当访问:项目根路径 / 静态文件名时,SpringBoot会依次去类路径下的四个静态资源目录下查找(默认配置)。 在资源文件resour…

极大提高工作效率的 Linux 命令

作为一名软件开发人员,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你总会遇到需要使用 Linux 命令的场合。例如,大多数 Docker 镜像都基于 Linux 系统。要进行 DevOps 工作,你需要熟悉Linux,至少要…

Redis中的缓存穿透

缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,导致这些请求直接到了数据库上,对数据库造成了巨大的压力,可能造成数据库宕机。 常见的解决方案: 1)缓存无效 key 如果缓存和数据库中都查不到某…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

校招免费资料大集合

通过以下资料,你可以免费获取到大量的校招资料和相关信息,帮助你更好地准备校园招聘。 学习交流群:进行计算机知识分享和交流,提供内推机会,QQ群号:325280438 夏沫Coding:致力于分享计算机干货…

STM32利用串口标准库发送字节,发送数组,发送字符串,发送数字,实现printf功能。

早晨到现在刚刚完成的功能:发送字节,发送数组,发送字符串,发送数字,实现printf功能。 当然这是建立在昨天学习使用串口发送数据的基础上,新建立的功能函数,咱们先来看看这次实验的结果吧&#…

AIGC:让生成式AI成为自己的外脑

前言 在数字化浪潮席卷全球的今天,人工智能(AI)已经渗透到了我们生活的方方面面。其中,生成式AI以其独特的魅力,正逐渐改变我们与世界的交互方式。AIGC(人工智能生成内容)作为生成式AI的重要应用…

LeetCode 热题 100 | 堆(二)

目录 1 什么是优先队列 1.1 优先队列与堆的关系 1.2 如何定义优先队列 1.3 如何使用优先队列 1.4 如何设置排序规则 2 347. 前 K 个高频元素 2.1 第 2 步的具体实现 2.2 举例说明 2.3 完整代码 3 215. 数组中的第 K 个最大元素 - v2 菜鸟做题,语…

cesium Clock JulianDate 日照分析

cesium在初始化的时候会自动把Clock对象挂载到容器上Clock内部以JulianDate维护时间,比北京时间慢8个小时,想显示北京时间需要计算时差JulianDate的日期部分和秒数部分是分开的 julianDayNumber:指整数天,记录从公元前4713年正午以…

基于SpringBoot实现WebSocket实时通讯的服务端和客户端

实现功能 服务端注册的客户端的列表;服务端向客户端发送广播消息;服务端向指定客户端发送消息;服务端向多个客户端发送消息;客户端给服务端发送消息; 效果: 环境 jdk:1.8 SpringBoot&#x…

社区热议!54.8k Star开源项目,GPT-4Free : 让GPT4免费不是梦

Hello,我是Aitrainee,GPT4Free就是最近传得沸沸扬扬的那个GPT4项目。大家都知道,虽然ChatGPT是免费的,但如果你想用到那些功能更强大的大模型,比如GPT-4、gemini-pro、claude,那就只能选择付费了。 但现在&…

在Linux搭建Emlog博客结合内网穿透实现公网访问本地个人网站

文章目录 前言1. 网站搭建1.1 Emolog网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2.Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总结 前言 博客作为使…

【2024最新版,redis7】redis底层的10种数据结构

前言:本文redis版本:7.2.4 本文语雀原文地址(首发更新):https://www.yuque.com/wzzz/redis/xg2cp37kx1s4726y 本文CSDN转载地址: https://blog.csdn.net/u013625306/article/details/136842107 1. 常见的数…

烯冷新能源邀您参观2024长三角快递物流展

参加企业介绍 宁波戈雷贝拓科技有限公司(宁波烯冷新能源科技有限公司)宁波烯冷新能源科技有限公司于2022年初成立,依托中国科学院宁波材料技术与工程研究所和国家石墨烯创新中心,公司开发产品包括:新能源制冷系统和集…