我有一个电子评论应用程序,具有复杂的用户界面和参数现实功能,如模型渲染和图像识别 . 支持图像识别功能所需的应用程序也适用于低端设备,但ARCORE尚不支持 . 所以唯一的选择是Unity . 由于没有统一的经验,想在android java中开发应用程序(所有UI组件,添加到购物车和支付功能)和AR模块在统一vuforia . 然后在android应用程序中集成统一AR模块代码并从java代码调用它 . 我已经看到很少有java和统一代码集成的教程,但那些是几乎没有反向沟通的示例项目 .
那么这是一个很好的方法来统一开发UI原生和AR渲染,然后将它们集成在一起吗?如果是,那么这种方法会造成多大的困难?
4 回答
Android到Unity的沟通非常简单 . 我使用它从过去3年,它的工作就像一个魅力:)
IMP: 在开发Unity Android应用程序时,可以扩展标准UnityPlayerActivity类(Android上Unity播放器的主要Java类,类似于Unity iOS上的AppController.mm) . 应用程序可以覆盖Android OS和Unity Android应用程序之间的任何和所有基本交互 .
您可以在C#unity代码中编写简单的Wrapper,并从Unity导出Android Studio源代码 .
Unity C#脚本允许您访问操作系统调用和第三方代码库等功能,否则Unity将无法使用这些功能 .
首先在Unity中创建代码并从统一调用android函数
1. First Create Build in Unity Editor:
您需要从Unity调用Native Android方法,反之亦然: Eg:
将其替换为您的活动和包名称
In C# (Caller)
In Android (Callee)
2. Then Export the code as development build and import the same in Android studio:
在Android Studio中扩展/修改UnityPlayerActivity . UnityPlayerActivity.java文件
In Android (Caller)
In C# (Callee)
然后创建一个新的Android Manifest,将新活动设置为应用程序的入口点 .
VERY VERY IMP :虽然此方法支持字符串,但仍然用于可靠输出使用指针/ IntPtr
Here is Complete Example Code:
Java:
public final class MyPlugin {//使类静态变量,以便将回调函数发送到此类的一个实例 . public static MyPlugin testInstance;
C#:
Usage from Java:
我会在UI中创建一个统一的移动应用程序 . Unity有很多可以在mobile AR工作的模块,我强烈建议你看看 . 如果你了解java,那么在c#中工作并不困难它们几乎是一样的 . 您可以使用Vuforia执行所有UI元素,我不明白为什么这是一个问题 . 事实上,Vuforia does allow you to use android studio with it,所以也许这条路线对你来说是最好的 .
如果您在Android方面经验丰富,我不会在Unity中创建所有内容,因为UI画布渲染器并不完全适合复杂的UI,如手机应用程序UI . 我做了一个与你的项目有点相反的项目,我在Unity中使用了Gallery View和360 Image Viewer等原生函数 . 请记住,当您在Android中运行Unity时,它实际上是一个环绕Unity的Android应用程序 . 所以你已经在使用Android应用和Unity了 .
如果您对Android不太了解,那么您将花费太多时间来配置难以维护的内容 . 所以权衡它,如果你在Unity中做所有事情,那么在IOS中部署你的应用程序也很容易 .
这是我在Android中做到的方式https://docs.unity3d.com/Manual/AndroidUnityPlayerActivity.html
如果您不熟悉Unity,则需要更长的时间来构建一个统一的应用程序 . 对于Android,您可以使用OpenCV .