问题标签 [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 回答
42 浏览

unity3d - 使用 Unity 开发需要同时在 PC 和 Android VR 眼镜上运行的模拟器

我正在使用 Unity 开发模拟器,Sim 在 PC 上运行并连接到 Sim,一切正常。

问题是 SIM 卡可以 360 度旋转,因此我无法查看操作员站中的电脑屏幕,而且我希望玩家能够环顾四周。

为此,我需要将 VR 眼镜连接到 PC 上正在运行的设备并同时运行并看到相同的场景,所有控件都从 PC 到物理 sim 并返回,VR 仅用于那个(环顾四周)

我能找到的唯一解决方案是运行 node.js 服务器(为简单起见,运行 node.js,可以是任何服务器)并从那里获取数据。

我想知道是否有更好的方法来做到这一点。

抱歉没有显示任何解决方案,我还没有,不知道从哪里开始连接,模拟器在 PC 上完美运行,只是不知道如何连接到 VR 眼镜,所以两者都会看到相同的事物。

10倍

0 投票
1 回答
234 浏览

android - Unity 插件的运行时错误(从 Activity 外部启动Activity..)

我在我的统一项目中实现了两个插件。第一个插件是一个包含主要活动的动态壁纸。第二个插件是原生共享。我所做的是我从包含主要活动的第一个插件中获得了上下文参考:

在统一脚本中

然后我使用Main_Context引用在第二个插件中调用共享函数

问题是我不断收到此错误:

所以我似乎有些需要在 startactivity() 调用之前在第二个插件中添加这一行

有没有更简单的方法来解决这个错误而不编辑已经编译的插件?

0 投票
1 回答
592 浏览

android - 制作 Unity Android 原生媒体播放器插件

我正在为统一制作一个原生 android 媒体播放器插件,一切正常,插件加载正确,参数正确传递给插件,即使播放器启动,但似乎什么都没有播放,没有声音出来。源代码是:

0 投票
1 回答
3845 浏览

android - 如何在 Unity Android 插件中发现蓝牙设备?

我正在为Android开发Unity游戏,它使用Android 插件能够在游戏期间通过蓝牙发送数据。发送数据并建立与配对设备的连接工作正常。但是,我无法发现新的蓝牙设备

在我的Plugin 类中(它还处理发送数据等,效果很好):

startBluetoothDeviceDiscovery 方法肯定被调用(由按钮触发),并且 bluetoothAdapter 已设置且不为空。设备上的蓝牙始终处于开启状态。

同样在Plugin 类中:

基本上,在发现新设备时,Android 文档所建议的内容。 https://developer.android.com/guide/topics/connectivity/bluetooth#DiscoverDevices

我想,也许周围没有设备,所以我希望在发现开始时已经触发接收器,所以我试图寻找BluetoothAdapter.ACTION_DISCOVERY_STARTED

在我的接收器 onReceive

每次单击按钮并调用该方法时startBluetoothDeviceDiscovery()都应该调用它,因为它总是启动蓝牙发现,但它仍然不起作用。

我最后的猜测是,由于插件不是一个活动,广播接收器无法访问。所以我将操作更改为BluetoothAdapter.ACTION_STATE_CHANGED,然后当我打开和关闭设备上的蓝牙时,它突然在onReceive().

我的清单(复制到正确的 Unity 文件夹位置):

那么为什么我打开bluetoothAdapter.startDiscovery()并发现接收器中没有接收到设备?

感谢您的任何帮助或想法:)

0 投票
1 回答
129 浏览

android-studio - 将价值从 Android Studio 传递到统一?

我正在使用 android studio 和 google vision 像本教程https://www.youtube.com/watch?v=mmuz8qIWcL8&t=702s做一个文本识别项目。但是我需要将识别出的文本传递给 Unity 以显示 3D 模型和一些与识别出的文本相关的信息。然后,用户可以查看和旋转该 3D 模型。问题是可以使用任何建议或方法将字符串或文本或值从 android studio 传递给 unity 吗?

0 投票
0 回答
127 浏览

android - 如何让 Android 插件从 Unity 的内部存储中读取 json 文件?

我成功地将所需的 json 文件添加到我的应用程序的内部存储中data/<packagename>/files/。我想要实现的是,在我的 android 插件(在 Unity 应用程序内)中创建一个可以从内部存储读取相同 json 的函数。我怀疑,如果这在运行时甚至是可能的。我在我的插件 contentprovider 类中尝试了这个,String file_name=context.getFilesDir() + "/"+"stickers.json";但我的应用程序在设备上崩溃了。

我认为的第二种选择是使用 UnitySendMessage 将整个 json 对象传递给 Android 插件(我以前从未使用过它)。

我希望插件读取内部存储的 json,因为我可以在运行时从统一动态修改 json,并从 android 插件代码执行我想要的功能。

更新

--------- beginning of crash 2020-05-30 14:09:32.275 22270-22270/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.Addy.Trace, PID: 22270 java.lang.RuntimeException: Unable to get provider com.plugin.unityapp.StickerContentProvider: java.lang.RuntimeException: contents.json file has some issues: /data/user/0/com.Addy.Trace/files/stickers.json: open failed: ENOENT (No such file or directory) at android.app.ActivityThread.installProvider(ActivityThread.java:7416) at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844) at android.app.ActivityThread.access$1300(ActivityThread.java:268) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7814) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068) Caused by: java.lang.RuntimeException: contents.json file has some issues: /data/user/0/com.Addy.Trace/files/stickers.json: open failed: ENOENT (No such file or directory) at com.plugin.unityapp.StickerContentProvider.readContentFile(StickerContentProvider.java:164) at com.plugin.unityapp.StickerContentProvider.getStickerPackList(StickerContentProvider.java:182) at com.plugin.unityapp.StickerContentProvider.onCreate(StickerContentProvider.java:98) at android.content.ContentProvider.attachInfo(ContentProvider.java:2113) at android.content.ContentProvider.attachInfo(ContentProvider.java:2087) at android.app.ActivityThread.installProvider(ActivityThread.java:7411) at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)  at android.app.ActivityThread.access$1300(ActivityThread.java:268)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:237)  at android.app.ActivityThread.main(ActivityThread.java:7814)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)  Caused by: java.io.FileNotFoundException: /data/user/0/com.Addy.Trace/files/stickers.json: open failed: ENOENT (No such file or directory) at libcore.io.IoBridge.open(IoBridge.java:496) at java.io.FileInputStream.<init>(FileInputStream.java:159) at com.plugin.unityapp.StickerContentProvider.readContentFile(StickerContentProvider.java:156) at com.plugin.unityapp.StickerContentProvider.getStickerPackList(StickerContentProvider.java:182)  at com.plugin.unityapp.StickerContentProvider.onCreate(StickerContentProvider.java:98)  at android.content.ContentProvider.attachInfo(ContentProvider.java:2113)  at android.content.ContentProvider.attachInfo(ContentProvider.java:2087)  at android.app.ActivityThread.installProvider(ActivityThread.java:7411)  at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)  at android.app.ActivityThread.access$1300(ActivityThread.java:268)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:237)  at android.app.ActivityThread.main(ActivityThread.java:7814)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)  Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory) at libcore.io.Linux.open(Native Method) at libcore.io.ForwardingOs.open(ForwardingOs.java:167) at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252) at libcore.io.ForwardingOs.open(ForwardingOs.java:167) at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7691) at libcore.io.IoBridge.open(IoBridge.java:482) at java.io.FileInputStream.<init>(FileInputStream.java:159)  at com.plugin.unityapp.StickerContentProvider.readContentFile(StickerContentProvider.java:156)  at com.plugin.unityapp.StickerContentProvider.getStickerPackList(StickerContentProvider.java:182)  at com.plugin.unityapp.StickerContentProvider.onCreate(StickerContentProvider.java:98)  at android.content.ContentProvider.attachInfo(ContentProvider.java:2113)  at android.content.ContentProvider.attachInfo(ContentProvider.java:2087)  at android.app.ActivityThread.installProvider(ActivityThread.java:7411)  at android.app.ActivityThread.installContentProviders(ActivityThread.java:6956)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6844)  at android.app.ActivityThread.access$1300(ActivityThread.java:268)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1982)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:237)  at android.app.ActivityThread.main(ActivityThread.java:7814)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068) 

这是android studio的LOGCAT中的崩溃日志。从脚本中的统一,我使用唤醒函数并将 json 文件写入内部存储,但可能在应用程序启动期间,插件没有使用内部存储检测到 jsonString file_name=context.getFilesDir() + "/"+"stickers.json";

JSON 文件内容

0 投票
0 回答
202 浏览

android - 如何连接 Unity 播放器首选项和 Android sharedPreferences?

我在使用 Unity android 的地方使用了本机 android 插件,我想将 json 文件传入和传出 unity 和 Android 插件。

我以前string contents = (File.ReadAllText(Application.persistentDataPath + "/contents.json"));统一使用从存储在外部存储中的 json 读取INTERNAL STORAGE/Android/data/<packagename>/files/ 我也正在从 android 插件中读取 contents.json File file_name=context.getExternalFilesDir("contents.json") ;,它运行良好。

但是后来我意识到json可以从android设备文件管理器和其他应用程序中看到,因此可以被篡改,所以这种方法根本不安全。

所以我在想我们是否可以使用 Player Prefs 和 shared preferences ,在那里我可以将我的 json 保存为来自 unity 的 player prefs 中的字符串,并且 android 插件可以访问它,反之亦然。我不确定这是否可能,或者还有其他选择吗?我想在运行时完成这一切。

附加信息:我这样做是因为我想在运行时不断更新 json 表单,然后从 android 插件访问这个更新的 json。

0 投票
0 回答
1047 浏览

android - 如何在whatsapp-sticker pack [Android][Unity-Android plugin]中动态添加贴纸?

我已经使用repo为我的统一游戏制作了一个 android 插件,其中我在每个级别奖励玩家一些贴纸。所以基本上我成功地从android插件调用了添加贴纸功能,并且可以根据所需的标识符和名称添加贴纸包。(这里的 contents.json 已经在 aar 中了。)

但是因为我现在需要编辑 contents.json(我们不能修改 .aar 文件)所以我复制资产文件内容签出内容提供程序代码https://pastebin.com/urhXTs7z 现在 contents.json 在我的Android/data/packagename/files/

在 Unity 中,我反序列化并序列化该 json,然后将项目添加到贴纸包列表中。然后覆盖contents.jsonif (Application.platform == RuntimePlatform.Android) { System.IO.File.WriteAllText(Application.persistentDataPath + "/contents.json", contents); }

它适用于原始contents.json,但更新stickerpack后,ReadContentFile函数不会读取新项目但这不起作用,插件只是读取原始contents.json。(因为在 OnCreate 中调用了复制资产,所以我尝试使用 android 的 sharepreferences 仅调用一次 copyassets 函数。但后来我的应用程序崩溃了。)

我在这里找到了有类似问题的人:https ://github.com/WhatsApp/stickers/issues/340 但我不知道该怎么做。

我什至不知道当代码在插件中时是否可以动态处理贴纸添加。

请参考 pastebin 链接中的代码

希望对替代方法提出任何建议。

0 投票
1 回答
775 浏览

flutter - 使用 flutter_unity_widget 并在我的统一项目中创建一个插件

我想使用 flutter_unity_widget 来嵌入我的统一项目并将其用作应用程序中的插件。

我点击了这个链接:

https://pub.dev/packages/flutter_unity_widget

但它没有编译为:

而flutter_unity_widget android build.gradle中的第39行是依赖项:

按照这个截图

脚步:

  1. 我在根文件夹中添加了统一项目
  1. 我在 Unity 中打开它,设置播放器设置并将其导出到 Android。

  2. pubspec.yaml:flutter_unity_widget:^0.1.6+5

  3. 根安卓/settings.gradle:

  4. 根安卓/UnityExport/build.gradle:

  5. 文件 -> 项目结构 -> 模块:添加 unity-classes.jar 作为模块

我正在尝试运行插件,但出现上述错误。

知道有什么问题吗?

0 投票
1 回答
1924 浏览

unity3d - Unity 的 Google In-App Review 插件错误:java.lang.ClassNotFoundException: com.google.android.play.core.review.ReviewManagerFactory

我正在尝试将 Google 的应用内审查功能集成到我的 Unity 应用程序中,并在 logcat 控制台上收到以下运行时错误消息。有谁知道这个问题的解决方案?

AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.play.core.review.ReviewManagerFactory (Filename: currently not available on il2cpp Line: -1)