例如在一个android项目中,点击一个按钮,启动unity for android。
1、首先在Unity 引擎中将Unity3D项目build一下,需要在build settings——> platform中选择Android平台。编译好, 就会在Unity3D项目的目录下\Temp\StagingArea中自动生成一个Android工程目录结构的包,这个包就是Android项目需要引用的包
2、根据unity3d项目..\Temp\StagingArea的目录包,在Eclipse中的新建一个项目,这个项目是根据Android Project from Existing Code 进行创建的项目
这个Existing Code Root Directory就是unity3d项目下的..\Temp\StagingArea这个目录,并将这个项目设置为Library
3、将这个Library项目中的assets目录下bin目录与libs目录拷贝到需要整合的Android项目中的assets目录下
4、需要与Unity3D进行整合的Android项目需要引用刚才的Library
5、最后把Unity3D安装目录如..\Unity\Editor\Data\PlaybackEngines\androidplayer\bin目录下的classes.jar拷贝到Android项目下libs的目录下,并引用它。
6、完成以上步骤,开始在Android项目中写脚本。
package com.example.androidcallunity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Context mContext = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.activity_main);
Button call = (Button)this.findViewById(R.id.button1);
call.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
myStartActivity();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void myStartActivity() {
Intent intent = new Intent(mContext,unityActivity.class);
intent.putExtra("name", "Activity");
this.startActivity(intent);
}
}
新建一个类脚本, 这个Activity是继承于UnityPlayerActivity。
package com.example.androidcallunity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import com.unity3d.player.UnityPlayerActivity;
public class unityActivity extends UnityPlayerActivity {
protected void onCreate(Bundle savedInstanceState) {
// call UnityPlayerActivity.onCreate()
super.onCreate(savedInstanceState);
// print debug message to logcat
Log.d("OverrideActivity", "onCreate called!");
}
}
如果你的unity程序LAUNCHER Activity不是UnityPlayerActivity,那么你在Intent 中就得写unity工程中的AndroidManifest.xml LAUNCHERActivity的类
Intent intent = new Intent(mContext,LAUNCHERActivity.class);
this.startActivity(intent);
Run As
点击按钮,启动unity开发界面