问题标签 [android-unity-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
704 浏览

android - 在不扩展 Activity 的情况下检测 Android 上的屏幕方向变化

我有这个适用于 Unity 的 Android 插件。目前它每帧重新计算一次相机的投影矩阵,虽然这有效,但显然非常浪费。我希望只有在屏幕方向发生变化时才能重新计算矩阵,因为这是唯一需要重新计算的时间。

但是,当我在网上查看时,我似乎可以找到的所有答案总是实现 onConfigurationChanged 或类似的,最终都要求您做同样的事情:扩展 Activity 类,这是我无法真正做到的,因为那里是没有活动。它只是一个构建的库,而不是一个完整的应用程序。

我知道有OrientationEventListener,但是每次设备的方向改变甚至一度时都会触发,所以这种方法仍然非常浪费。

我想知道的是,有没有办法检测屏幕方向的变化,比如某种onConfigurationChanged不需要扩展 Activity 才能使用的事件?

基本上我想要结束的是这样的:

而不是我现在拥有的更像是:

0 投票
0 回答
951 浏览

android - Unity3d - APK 仅在 200 台设备上兼容

我有一个在 Unity3D 平台上开发的简单游戏。该游戏仅使用一个插件来访问手机温度、陀螺仪、加速度计等。

该应用程序在各种设备上运行,我在它们上手动安装了该应用程序。此外,我还可以通过 Unity 进行构建并生成 APK。问题是当我将我的新 APK 上传到 Google Play 商店时,我收到一条消息,告诉我我的应用程序仅在大约 200 台 Android 设备上受支持。如果没有该插件,我能够获得/提供对大约 10,000 台设备的支持。

我试图更改插件附带的 AndroidManifest,但没有成功。我只想使用非常常见的 4 个权限和 8 个功能:

请帮我解决这个问题。

0 投票
1 回答
2312 浏览

android - Unity 忽略 android 插件清单文件导致丢失其 android 清单中的元素

我为 Unity3D 创建了一个 Android 插件。该插件通过调用bindService()启动后台服务。为了声明此服务,我已将该<service>元素作为元素的子元素放在我的 android 模块<application>的 AndroidManifest.xml 文件中。然后我从模块创建了一个 jar 文件并将其放在Assets\Plugins\Android文件夹中。

问题是<service>Unity 创建的 AndroidManifest 文件中缺少该元素。这是为什么?

Unity 应该从 jar 文件中提取我的清单,并根据Unity 文档将其与自己的清单文件合并:

您可以将预编译的 Android 库项目放入 Assets->Plugins->Android 文件夹中。预编译意味着所有 .java 文件必须已编译为位于项目的 bin/ 或 libs/ 文件夹中的 jar 文件。构建项目时,这些文件夹中的 AndroidManifest.xml 将自动与主清单文件合并。

所以结果清单文件应该包含该<service>元素(但它不像之前所说的那样)。

以下是我的模块及其清单文件:

在此处输入图像描述 我使用以下 gradle 代码(来自此处)将模块转换为 jar 文件:

注意:我的问题不是这个问题的重复。我没有制作自定义清单,也没有修改 Unity 制作的清单。我的问题是为什么统一不会将我编译的模块(.jar 文件)的清单合并到它自己的清单中。

0 投票
0 回答
1566 浏览

android - UnityPlayer.UnitySendMessage 在非 UnityPlayerActivity 中不起作用

这个 Stack Overflow question类似,我正在为 Android 构建一个插件,它启动一个非 UnityPlayer 活动。我遇到的问题是 UnityPlayer.UnitySendMessage 在 Activity 完成之前不会向 Unity 发送任何消息(在这种情况下,Unity 会立即收到所有消息)。当 UnityPlayerActivity 不是当前活动时,有没有办法向统一发送消息?

0 投票
1 回答
2273 浏览

unity3d - Unity 错误:无法将类转换为 dex 格式

我创建了一个 Android Unity 插件(.aar 文件),它为我的 Unity 游戏提供了一些自定义定位数据。在我的 Unity 脚本中,我使用

var x = customClass.CallStatic<float>("getHeadX");

为了得到一些位置数据。此方法每帧调用一次以获取更新的数据(轮询方法),这使其效率低下。相反,当更新的数据准备好时,我决定从我的 java 代码(插件端)调用 Unity 脚本中的 C# 方法。为此,在我的 java 插件中,我写道,

但是,编译器抱怨包com.unity3d.player.UnityPlayer不存在。所以我从

C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\ classes.jar

进入我的android插件项目的'libs'文件夹。我成功构建它并将生成的 .aar 文件(mylibrary-release.aar)复制到我的 Unity 项目的 Assets\Plugins\Android 文件夹中。

当我构建 Unity 项目(使用“内部”构建系统)时,它给了我这个错误:

IOException: 无法将文件/目录从 'Temp/StagingArea\android-libraries\mylibrary-release\classes.jar' 移动到 'Temp/StagingArea\android-libraries\mylibrary-release\libs\classes.jar'。UnityEditor.Android.PostProcessor.Tasks.ProcessAAR.Execute ...

发生此错误是因为 classes.jar 依赖项与 classes.jar 名称冲突(由我的插件统一制作)。因此,我将依赖项名称更改为unity_classes.jar,这解决了问题,但现在在构建统一应用程序时出现新错误:

CommandInvokationFailure:无法将类转换为 dex 格式。 C:/Program Files/Java/jdk1.8.0_102\bin\java.exe -Xmx2048M Dcom.android.sdkmanager.toolsdir="C:/Users/kamran.shamloo/AppData/Local/Android/Sdk\tools" -Dfile .encoding=UTF8 -jar "C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar"

stderr [未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lbitter/jnibridge/JNIBridge;未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lbitter/jnibridge/JNIBridge$a; 未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/unity3d/player/NativeLoader;未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/unity3d/player/ReflectionHelper;未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/unity3d/player/ReflectionHelper$1;未捕获的翻译错误:java.lang.IllegalArgumentException:已添加: Lcom/unity3d/player/ReflectionHelper$a; 未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/unity3d/player/UnityPlayer;未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/unity3d/player/UnityPlayer$1;未捕获的翻译错误:java.lang.IllegalArgumentException:已添加:Lcom/unity3d/player/UnityPlayer$10;...

0 投票
0 回答
230 浏览

unity3d - 使用 ndk 工具链的 Unity Android 插件和 opencv 链接

我正在尝试为使用opencv的android(最终也在IOS上)编写一个统一插件。

我设法使用 Android NDK Toolchain to arm7 架构将普通的 helloworld.cpp 编译到共享库中,我也对 x86 执行相同操作,并将生成的 *.so 包含到 Plugin/Android/libs/x86 & Plugin/Android/ libs/armeabi-v7a,它运行良好(我返回了一个简单的整数并查看了 logcat 上的日志)。

问题是,一旦我尝试编译我的 c++ 代码并链接 Opencv4Android 的静态库(编译返回一个相对较胖的共享库,没有任何问题),但是一旦我运行统一生成的 apk,我得到 dllExceptionNotFound

这是我用来将 cpp 代码编译到所有 android 架构的脚本

另外,根据我对静态链接的理解,我不需要复制.a,因为编译步骤会这样做,对吗?我对所有这些都是新手,所以任何帮助表示赞赏。

0 投票
0 回答
245 浏览

android - 查看 Framelayout 的顺序

这是示例代码:

我想view放在顶部和gls底部,但是一些 android 设备会gls放在顶部。我该如何解决?

psbringToFront()一些 android 设备会让它进入底部。

0 投票
1 回答
67 浏览

android - 在 UnityPlayer(Android/iOS) Cardboard 和 DayDream 中导入 Unity 场景

我的项目中有多个场景,由于应用程序的大小,我不想将所有场景都嵌入到 apk 中。我想动态导入 .unityproject 或 unity 场景(从互联网下载)并在应用程序中渲染它。可能吗 ?我们还有其他可能的方法来实现这一点吗?

提前致谢。

0 投票
1 回答
543 浏览

java - 为涉及复杂 Android 功能的游戏在统一和原生 java 之间进行选择

我想为 Android 开发一个游戏,包括使用相机、读取设备上的文件、读取联系人等。

如果我使用统一进行开发,我可以执行这些操作还是必须使用本机 Java?或者我可以从统一开始,然后将项目导入 Android Studio,然后添加这些功能?

该游戏将是一个基于故事的游戏。所以它只是具有低多边形艺术风格的 2D。

(我有相当多的应用程序开发经验,但这是我第一次尝试开发游戏。)

0 投票
0 回答
381 浏览

java - Unity Plugin 不适用于带有侦听器实现的接口

我的办公室有一个用 Java 编写的 Android 网络库,可以快速轻松地进行多人网络,

现在,我被分配让库在 Unity3D 上工作,我在 Unity 插件、AndroidJavaClass、AndroidJavaProxy、AndroidJavaRunnable 等方面做了功课,

所以,我可以让大多数 Android/Java 方法像这样工作,

从 Java 类 -

并且可以像这样访问类中的方法或从 C# 导入的方法 -

当我为网络状态更改侦听器实现侦听器时出现问题

现在,插件根本不起作用,甚至测试方法也不起作用,

我在 C# 中使用 AndroidJavaProxy 进行了接口回调,但没有实现,在 Java 类上,服务将无法启动:/

对我来说有什么好主意可以在不需要更改库中的任何内容的情况下使其正常工作吗?

提前致谢 :)