Unity AndroidJavaObject 无法正常工作而不显示错误
Posted
技术标签:
【中文标题】Unity AndroidJavaObject 无法正常工作而不显示错误【英文标题】:Unity AndroidJavaObject not working without showing errors 【发布时间】:2020-06-29 05:06:38 【问题描述】:我一直在尝试统一调用 Java 方法。不适合我,即使是文档中最简单的例子
using System.Collections;
using UnityEngine;
public class ExampleClass : MonoBehaviour
void Start ()
androidJavaObject jo = new AndroidJavaObject ("java.lang.String", "some string");
int hash = jo.Call<int> ("hashCode");
Debug.Log ("hash=" + hash);
Unity 控制台打印hash=0
,这不是提供的字符串的哈希码。即使我更改并使用java.lang.StringInvalidClass
作为类名,unity 仍然会向控制台报告相同的结果而不会通知错误。我什至可以尝试调用 toString、toStringa、toInvalid2,它们总是返回空字符串而不会显示错误。
这是一个全新的 2d 项目,上面仅显示脚本,附加到 camara 对象。我使用的是 Ubuntu,Unity 2019.4,项目平台是 Android。
感谢您的帮助。
【问题讨论】:
"fails without errors",要么有错误,要么没有失败。也许它没有做你期望它做的事情,但这并不意味着它失败了。更有可能是代码的问题。您可能想检查一下:codejava.net/coding/… 据我从统一文档中看到的AndroidJavaObject
类和Call
方法都期望第二个参数是array
。不确定字符串在这种情况下是否符合字符数组的条件。
嗨@stultuske。如前所述,即使我使用 java.lang.StringInvalidClass,统一打印也是一样的。当然 StringInvalidClass 不存在,它应该抛出一个错误。因此,有些事情在控制台中没有实际抛出或显示错误就失败了。为了避免复杂性,我使用了一个简单的示例。
嗨@user3647971。是的,AndroidJavaObject 和 Call 使用数组作为第二个参数,但如果不需要参数或只需要一个参数,则可以不提供它而只提供一个。其实提供的代码是直接从uninty docs复制过来的:docs.unity3d.com/es/530/ScriptReference/…
@Jhovanni 我注意到文档适用于旧版本的统一。 See here 应该包含在UnityEngine.AndroidJNIModule
中。可能不是问题,但值得一试。
【参考方案1】:
在与 unity 合作一段时间后回答自己。
web 和 unity 文档中的所有示例都没有提及它,这很奇怪,因为它很容易提及并且关于混淆:代码需要作为 android 应用程序运行。编辑器甚至unity remote都不起作用,为了使用AndroidJavaObject和相关类,您的代码需要作为安装在手机中的android应用程序运行。
【讨论】:
以上是关于Unity AndroidJavaObject 无法正常工作而不显示错误的主要内容,如果未能解决你的问题,请参考以下文章