java - 从unity发送数据到java android

标签 java c# android unity-game-engine

我创建了一个 Unity 项目,我正在尝试将数据从 C# 发送到 Unity。在我的 C# 代码中,我实现了以下代码:

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("shareText","test","test");

它在我的 Activity 中适用于 Android :

public class UnityActivity extends AppCompatActivity {

    public void shareText(String AppId,String PublisherID) {
        Log.e("test","test");
        Log.e("test",AppId);
        Log.e("test",PublisherID);
    }
}

但在另一种情况下,我创建了一个包含 unityPlayer 的自定义 View 。

所以现在我有包含UnityView(这是一个java类)的UnityActivity,最后一个包含我的自定义 View (扩展线性布局)和unityPlayer,并且使用相同的代码它不起作用:

public class CstUnityView extends LinearLayout {
    private UnityPlayer mUnityPlayer;

    public void shareText(String AppId,String PublisherID) {
        Log.e("test","test");
        Log.e("test",AppId);
        Log.e("test",PublisherID);
    }
}

有人知道为什么它不起作用吗?!

最佳答案

所以你的问题是,自定义线性布局中的 shareText() 不能被统一调用,除非它在 Activity 中声明。需要在您的 Activity 中声明它,以便您的统一 Call 启动该函数。

您可以先检查控制台日志以确保它已被调用。 之后,您可以使用从 Activity 收到的自定义布局 View 。

在您的 Activity 中

protected UnityPlayer mUnityPlayer;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//this creates unityplayer with context to your activity
mUnityPlayer = new UnityPlayer(this);

//this requests focus so that the currentactivity is set to your activity
//that is why shareText() can be called from your Unity
mUnityPlayer.requestFocus();

//call layout here
yourLinearlayout customlayout = new yourLinearLayout();
//do what you want to do with this customlayout
//....
}
public void shareText(String AppId,String PublisherID) {
    Log.e("test","test");
    Log.e("test",AppId);
    Log.e("test",PublisherID);
}

关于java - 从unity发送数据到java android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179805/

相关文章:

c# - ThreadLocalStorage 什么时候被清理

android - 如何自动将事件添加到日历?

java - 无法解析符号 Mock 或 InjectMocks

java - 关于序列化、serialVersionUID、类不兼容

c# - 客户报告定义 (.rdlc) 文本框垂直对齐文本

c# - 在后面的代码中执行时,我的存储过程总是返回零

android - 抖动图片可以具有相同的文件名吗?

android - 使用 Unity-ARKit 插件创建 Android AR 应用

java - SpringBoot Redis 远程主机

java - 使用 mvvm 时将业务逻辑放在哪里