Pequeñas habilidades de iOS: esquema de integración con uni-app y unity

Este artículo está participando en el "Proyecto Piedra Dorada"

introducción

Antecedentes del proyecto: la aplicación iOS está integrada con funciones H5 y AR, y AR se desarrolla utilizando unity2020.

Punto técnico: el proyecto de destino exportado por la unidad Unity-iPhone.xcodeprojestá integrado con el original

Solución actual: uniapp une IOS, ios une unity, uniapp desarrolla el código nativo de iOS en forma de complemento y luego lo integra en un archivo ipa.

Ideas de implementación

Idea 1: uniapp une IOS, ios une unity y luego lo integra en un archivo ipa.

Lo que Unity publica en la plataforma iOS es un proyecto Xcode y uniapp es un paquete de recursos locales.

Idea 2: la aplicación nativa integra el proyecto Xcode exportado por Unity (el proyecto exportado debe empaquetarse como una biblioteca estática) zhuanlan.zhihu.com/p/103759507www.jianshu.com/p/00dcac5b2…

Idea 3: Unity3D incorpora el código nativo de iOS www.jianshu.com/p/82e34d9a1…

Idea 4: El proyecto web exportado por Unity se implementa en el servidor y la aplicación nativa carga la dirección H5 correspondiente. (Video AR no admite la exportación web)

El AR del applet es reconocimiento de imágenes, y el AR de realidad aumentada es reconocimiento de espacio; el applet está en la pantalla y la aplicación puede seguir la imagen en 3D.

Si tiene mejores ideas y artículos relacionados, deje un mensaje para intercambiar.

II puente

2.1 El método de llamar a Unity en IOS

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

Utilice la interfaz UnitySendMessage proporcionada por unityengine.dll en C. El primer carácter* indica el nombre del GameObject que recibe el mensaje, el segundo indica el nombre de la función que recibe el mensaje en el script del GameObject y el tercero indica el parámetro pasado.

    //参数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进行发布通知,实现通信。 inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

在这里插入图片描述

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 modularización de componentes se ha convertido en el modo principal del desarrollo front-end. Tome React y Webpack como ejemplos: divida todas las funciones involucradas en una aplicación en componentes, cada componente corresponde a un archivo fuente y luego empaquete estos archivos fuente a través de Webpack. Durante el proceso de desarrollo, puede abrir un servidor local a través de Webpack para ver el efecto de ejecución del código en tiempo real.

IV Preguntas Frecuentes

4.1 Dispositivos compatibles con ARCore

desarrolladores.google.cn/ar/devices#…

4.2 Desarrollo mixto de uni-app y aplicación nativa

En primer lugar, asegúrese de confirmar uni-app y el código nativo, quién es el maestro y quién es el esclavo.

uniapp.dcloud.io/hybrid.html

  1. Si su aplicación está desarrollada por uni-app y necesita expandir algunas capacidades nativas, primero vaya al mercado de complementos para ver si hay complementos listos para usar. De lo contrario, desarrolle complementos nativos usted mismo.
  2. Si su aplicación se desarrolla de forma nativa y algunas columnas funcionales desean implementarse a través de la aplicación uni, hay dos formas: a. Integrar el sdk del subprograma uni en la aplicación nativa y luego ejecutar la interfaz del subprograma desarrollado con el uni. -proyecto de marco de aplicación (paquete de recursos de aplicación de mini programa wgt). nativesupport.dcloud.net.cn/README b. Si no desea integrar el SDK nativo, publique el código uni-app como H5 y ábralo a través de la vista web en la aplicación nativa.

ver también

Cuenta oficial: ingeniería inversa de iOS

Supongo que te gusta

Origin juejin.im/post/7208897614824325178
Recomendado
Clasificación