我创建了一个 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/