首先在Unity下创建一个新的工程,然后建立场景,导出成安卓项目。(我用的是一个AR项目)
当导出的android项目导入Eclipse,
新建一个Activity,并在AndroidManifest中设置这个Activity为MainActivity
<activity
android:name="com.xxx.xxx.NewActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
把原有的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
删掉。
程序启动时显示的Activity代码:
package com.studio.androidpart.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.studio.unitypart.R;
import com.studio.unitypart.UnityPlayerActivity;
public class HomePageActivity extends Activity {
Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homepage);
b = (Button) findViewById(R.id.enterButton);
//点击按钮切换场景
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i=new Intent(HomePageActivity.this,UnityActivity.class);
startActivity(i);
}
});
}
}
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
>
<Button
android:id="@+id/enterButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Button" />
</RelativeLayout>
再新建一个Activity,这个Activity需要继承自UnityPlayerActivity,并且需要为这个Activity建立一个布局(可能用来承载Unity的场景呈现)
布局文件
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/unity_scene"
android:layout_width="match_parent"
android:layout_height="match_parent">
</RelativeLayout>
Activity文件:
package com.studio.androidpart.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.RelativeLayout;
import com.studio.unitypart.R;
import com.unity3d.player.UnityPlayerActivity;
public class UnityActivity extends UnityPlayerActivity{
private RelativeLayout u3dLayout;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arscene);
u3dLayout = (RelativeLayout) findViewById(R.id.unity_scene);
u3dLayout.addView(mUnityPlayer);
mUnityPlayer.requestFocus();
}
@Override
/**
* 响应手机物理返回键
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK&& event.getRepeatCount() == 0) {
Intent i=new Intent(UnityActivity.this,HomePageActivity.class);
startActivity(i);
return true;
}
return super.onKeyDown(keyCode, event);
}
}
新的Activity也要在AndroidManifest中配置下
然后run就可以了