gpt4 book ai didi

c# - 从 Unity 3d 获取 applicationContext

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:13:24 25 4
gpt4 key购买 nike

我正在为 unity 3d 编写一个 android 插件,我的问题是初始化我需要将 applicationContext 传递给一个方法。所以我的 MyPlugin.cs 如下所示

using UnityEngine;
using System.Collections;

public class MyPlugin : MonoBehaviour {

void Awake () {
Debug.Log ("awake");
Initialize ();
}

public static void Initialize()
{
AndroidJavaClass playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass pluginClass = new AndroidJavaClass("com.mycompany.product.UnityPlugin");
pluginClass.CallStatic("initialize", new object[1] {activity});
}
}

在 android UnityPlugin.java 类中我有

public class UnityPlugin extends Plugin {
static public void initialize (Activity unityActivity){
try {
MyApp.initialize(unityActivity.getApplicationContext());
} catch (NullPointerException e){
Log.d("unity", "null pointer exception");
}
}
}

我总是得到 NullPointerException。从统一 Activity 中获取 AppilcationContext 的正确方法是什么?

最佳答案

首先,检查pluginClass是否为null

if(pluginClass == null) Debug.Log("plugin class is null");

如果确保您正在使用正确的字符串参数创建新的 AndroidJavaClass。

接下来,我不确定为什么要传递一个 Activity 的数组而不是仅传递 Unity 的上下文。尝试这样的事情:

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
pluginClass.CallStatic("initialize", context);

您还需要按照以下方式更改插件端:

public class UnityPlugin extends Plugin {
static public void initialize (Context unityContext){
try {
MyApp.initialize(unityContext);
} catch (NullPointerException e){
Log.d("UnityPlugin", "Null PTR Exception");
e.printStackTrace();
}
}
}

关于c# - 从 Unity 3d 获取 applicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33496438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com