Petites compétences iOS : schéma d'intégration avec uni-app et unity

Cet article participe au "Golden Stone Project"

introduction

Contexte du projet : l'application iOS est intégrée aux fonctions H5 et AR, et AR est développée à l'aide de Unity2020.

Point technique : Le projet cible exporté à l'unité Unity-iPhone.xcodeprojest intégré à l'original

Solution actuelle : uniapp bridge IOS, ios bridge unity, uniapp développe du code natif iOS sous forme de plug-in, puis l'intègre dans un fichier ipa.

I Idées de mise en œuvre

Idée 1 : uniapp relie IOS, ios relie l'unité, puis l'intègre dans un fichier ipa.

Ce que Unity publie sur la plate-forme iOS est un projet Xcode, et uniapp est un package de ressources locales.

Idée 2 : Native APP intègre le projet Xcode exporté par Unity (le projet exporté doit être packagé en tant que bibliothèque statique) zhuanlan.zhihu.com/p/103759507www.jianshu.com/p/00dcac5b2…

Idée 3 : Unity3D intègre le code natif iOS www.jianshu.com/p/82e34d9a1…

Idée 4 : Le projet Web exporté par Unity est déployé sur le serveur, et l'APP native charge l'adresse H5 correspondante. (Video AR ne prend pas en charge l'exportation Web)

L'AR de l'applet est la reconnaissance d'image et l'AR de réalité augmentée est la reconnaissance de l'espace ; l'applet est à l'écran et l'application peut suivre l'image en 3D.

Si vous avez de meilleures idées et des articles connexes, veuillez laisser un message pour échange.

II pontage

2.1 La méthode d'appel de Unity dans IOS

insérez la description de l'image ici

insérez la description de l'image ici

Utilisez l'interface C UnitySendMessage fournie par unityengine.dll. Le premier caractère* indique le nom du GameObject qui reçoit le message, le second indique le nom de la fonction qui reçoit le message dans le script du GameObject, et le troisième indique le paramètre passé.

    //参数1 场景中模型的名字
    //参数2 脚本名称方法
    //参数3 想unity传递一个char类型的数据
   UnitySendMessage("iOSSendMessageToUnity""ChangeCameraDirection""");
复制代码

结合后unity里面的你先打开后是进入这个场景(SelectScene) 物体名SceneManager 脚本名SceneSelect 函数ChangeScene(string str) 传参数ZhenWuMiaoAR就是真武庙;或者传参数modelShow就是沙盘。

2.2 uniapp 桥接iOS

除了 uni-app 框架内置的跨端 API,各端自己的特色 API 也可通过条件编译 自由使用。因此uniapp可直接使用原生API进行发布通知,实现通信。 insérez la description de l'image ici

insérez la description de l'image ici

在这里插入图片描述

III uni-app运行原理

kunnan.blog.csdn.net/article/det…

3.1 js引擎

浏览器的js引擎,就是jscore或v8的基础上新增了一批浏览器专用API,比如dom;

node.js引擎,则是v8基础上补充一些电脑专用API,比如本地io;

uni-app的App端和小程序端的js引擎,其实是在jscore上补充了一批手机端常用的JS API,比如扫码。

3.2 运行原理

uni-app 在非H5端运行时,从架构上分为逻辑层和视图层两个部分。

  1. 逻辑层负责执行业务逻辑,也就是运行js代码。

逻辑层是运行在一个独立的jscore里的,它不依赖于本机的webview,所以一方面它没有浏览器兼容问题,可以在Android4.4上跑es6代码,另一方面,它无法运行window、document、navigator、localstorage等浏览器专用的js API。

  1. 视图层负责页面渲染。

h5和小程序平台,以及app-vue,视图层是webview。

而app-nvue的视图层是基于weex改造的原生渲染视图。

3.3 编译器

vue2:uni-app编译器基于wepback实现

vue3:uni-app编译器基于Vite实现,编译速度更快

HBuilderX 3.3.0+ , uni-app在App/H5/小程序全平台支持Vue 3.0开发,且全平台支持Vite编译器。

Webpack1
   |
   |
Rollup 出现(推崇 ESM 规范,可以实现 tree shaking, 打包出来的代码更干净)
   |
   |
Webpack2(也实现了 tree shaking, 但是配置还是太繁琐了)
   |
   |
Parcel (号称 0 配置)
   |
   |
Webpack4(通过 mode 确定 development 和 production 模式,各个模式有自己的默认配置)
   |
   |
Webpack5(持久化缓存、module federation)
   |
   |
Esbuild(采用 go 语言开发,比 Webpack 更快)
   |
   |
Vite(推崇 ESM 规范,开发模式采用 nobundle,更好的开发体验)
复制代码

La modularisation des composants est devenue le mode courant du développement front-end.Prenez React et Webpack comme exemples : divisez toutes les fonctions impliquées dans une application en composants, chaque composant correspond à un fichier source, puis empaquetez ces fichiers sources via Webpack. Pendant le processus de développement, vous pouvez ouvrir un serveur local via Webpack pour afficher l'effet d'exécution du code en temps réel.

IV Foire aux questions

4.1 Appareils prenant en charge ARCore

développeurs.google.cn/ar/devices#…

4.2 Développement mixte d'uni-app et d'App native

Tout d'abord, assurez-vous de confirmer uni-app et le code natif, qui est le maître et qui est l'esclave.

uniapp.dcloud.io/hybrid.html

  1. Si votre application est développée par uni-app et doit étendre certaines fonctionnalités natives, allez d'abord sur le marché des plug-ins pour voir s'il existe des plug-ins prêts à l'emploi. Sinon, développez vous-même des plug-ins natifs.
  2. Si votre application est développée en mode natif et que certaines colonnes fonctionnelles doivent être implémentées via uni-app, il existe deux manières : a. Intégrez le SDK de l'applet uni dans l'application native, puis exécutez le front-end de l'applet développé avec l'uni -projet de cadre d'application (paquet de ressources d'application de mini-programme wgt). nativesupport.dcloud.net.cn/README b. Si vous ne souhaitez pas intégrer le SDK natif, publiez le code uni-app en tant que H5 et ouvrez-le via WebView dans l'application native.

voir également

Compte officiel : rétro-ingénierie iOS

Je suppose que tu aimes

Origine juejin.im/post/7208897614824325178
conseillé
Classement