java - 如何将自定义类对象从 Unity C# 传递到 Android 插件的 Java 代码?
问题描述
我是使用 Unity Android 插件的新手。我AlertDialog
在 Android Studio 中制作了一个本机,并使用 Unity Android 插件使用它。我还可以输入用户名EditText
,当用户单击OK时,用户名和按钮 ID将发送到 Unity C# 代码。因此,我需要从 Native Android Java 代码返回的 2 个值。AlertDialog
因此,我在 Unity C# 中创建了一个类,在 Android Studio 中创建了一个相应的 Java 类。但我收到一个错误。
Exception: No such proxy method: AlertViewCallback.onButtonTapped(UnityEngine.AndroidJavaObject)
这是我的 Unity C# 代码
public class UserValues
{
public int buttonIndex;
public string inputText;
}
public class AlertViewCallback : AndroidJavaProxy
{
const string pluginName = "com.mycompany.pluginexample.MyPlugin";
private Action<UserValues> alertHandler;
public AlertViewCallback(Action<UserValues> alertHandlerIn) : base(pluginName + "$AlertViewCallback")
{
alertHandler = alertHandlerIn;
}
public void onButtonTapped(UserValues userValues)
{
Debug.Log("Button tapped: " + userValues.buttonIndex + ", Username: " + userValues.inputText);
if (alertHandler != null)
alertHandler(userValues);
}
}
public Action<UserValues> EdiTextDialog = (UserValues userValues) =>
{
Debug.Log("Got Index: " + userValues.buttonIndex + ", Username: " + userValues.inputText);
};
public void CallNativeAndroidDialog()
{
PluginInstance.Call("showAlert", new object[] { new AlertViewCallback(EdiTextDialog) });
}
这是我的 Java 代码
public class UserValues
{
public int buttonIndex;
public String inputText;
}
public class MyPlugin
{
public interface AlertViewCallback
{
public void onButtonTapped(UserValues userValues);
}
public void showAlert(final AlertViewCallback callback)
{
DialogInterface.OnClickListener dialogOnClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int id) {
dialogInterface.dismiss();
UserValues userValues = new UserValues();
userValues.buttonIndex = -2;
userValues.inputText = "James";
callback.onButtonTapped(userValues);
}
};
}
}
我能够打开和关闭本机对话框。只有当我点击Dialog上的Button时才会遇到Exception,也就是onButtonTapped(UserValues userValues)
被调用的时候。
请注意,当我仅使用整数值(onButtonTapped(int id)
如 onButtonTapped(int id, String Username), then also it is working
我只在使用任何自定义类的对象时遇到问题,例如UserValues
.
如何将任何自定义类的对象从 Unity C# 传递到 Android 插件的 Java 代码?
解决方案
推荐阅读
- powershell - 使用 PowerShell 回复 Outlook 邮件
- python - python 3中连续随机数“*”
- html - 如何更改网站相对于屏幕的大小并保持标准分辨率?
- opencv - 手掌分割:cv2.erode 的替代品
- svelte - 如何在 svelte.js 中使用 svelte-router-spa 在多个页面上定义全局变量
- c - c(C90)中的分段错误,有什么问题?
- swift - SwiftUI 可选 @Binding 不会在第一次更改时更新其值
- python - 如何有不同宽度的代码单元和输出单元?
- spring - 具有多个搜索库组的 Spring Security 5 失败,而具有相同凭据的单个组库则没有。我在这里想念什么?
- elasticsearch - 如何为索引文档中的集合设置 null