關於Unity與安卓交互的方法,網上的教程很多,但是大部分要繼承UnityPlayerActivity 額大概是這個類吧,領會精神。
那麽問題來了,加入我們已經有一個SDK繼承了怎麽辦。
解決思路是這養的,我們在C#中獲取Unity的acitvity,然後當作參數傳入安卓方法:
Unity:
AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
using (AndroidJavaObject jo = new AndroidJavaObject("com.klondike.solitaire.spider.Classic.SDKBridge"))
{
jo.Call("PluginCall", unityActivity);
Debug.Log("调用安卓方法");
}
Java:
public void PluginCall(Activity activity)
{
Log.d("PluginCall","CALLALLLLL");
}
//通过这种方法,可以不必在MainActivity修改,直接启动相关SDK
安卓端:
MainActivity.java
public void ShowMsg(Activity activity,String msg)
{
Intent intent = new Intent(activity.getBaseContext(),HelloWorld.class);
intent.putExtra("type", msg);
activity.startActivity(intent);
}
HelloWorld.java
public class HelloWorld extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// TextView showMsg = (TextView) findViewById(R.id.android_show);
String type = this.getIntent().getStringExtra("type");
// showMsg.setText(type);
}
}
額 后米那是我在嘗試模仿SDK的方法通過不添加activity的子類進行view的跳轉和變化,從而徹底拜托對包名的依賴,做出通用的SDK,希望有大佬路過指導一下哦 PS:賣萌、暖床、打王者我都會哦