Unity调用安卓
16lz
2021-01-23
unity调android 本人目前发现android主activity必须继承UnityPlayerActivity,unity才能通过
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity"); jo.call("函数名")
或者
AndroidJavaClass jc = new AndroidJavaClass("包名+.主Activity");
jc.CallStatic("函数名");
unity调Android(一)中unity没法调用android 本文主要解决调用问题:
实现思路是通过activity切换调用的方式。受益于 雨凇momo教程 。让主activity继承UnityPlayerActivity,然后在主activity里通过
Intent intent = new Intent(mContext,"子activity"+.class);
intent.putExtra("Activity", "Activity");
this.startActivity(intent);
以下主要实现代码:
public class SDKDemo extends UnityPlayerActivity{ Context mContext=null; JoyActivity joyActivity; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext=this; Intent intent = new Intent(mContext,JoyActivity.class); intent.putExtra("JoyActivity", "JoyActivity"); this.startActivity(intent); } public void nativeInit() { Log.e("nativeInit","nativeInit Enter"); joyActivity=new JoyActivity(); joyActivity.nativeInit(); Log.e("nativeInit","nativeInit End"); }public class JoyActivity extends Activity { UnityPlayer unityPlayer; // UnityPlayer.init() should be called before attaching the view to a layout. // UnityPlayer.quit() should be the last thing called; it will terminate the process and not return. protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(android.R.style.Theme_NoTitleBar_Fullscreen); requestWindowFeature(Window.FEATURE_NO_TITLE); mUnityPlayer = new UnityPlayer(this); if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true)) getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1); boolean trueColor8888 = false; mUnityPlayer.init(glesMode, trueColor8888); View playerView = mUnityPlayer.getView(); setContentView(playerView); playerView.requestFocus(); }以上代码 也可以参考 unity调android(一)中的方式 public void nativeInit () { Log.e("nativeInit", "##########################"); }unity代码:void Start () { jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); jo = jc.GetStatic("currentActivity"); jo.Call("nativeInit"); }
更多相关文章
- C语言函数以及函数的使用
- Android顶部工具栏和底部工具栏的简单实现代码
- Android的多媒体框架Opencore代码阅读
- Android应用程序启动过程源代码分析
- Android中创建对话框(确定取消对话框、单选对话框、多选对话框)
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
- 经典Android系统源代码