Android启动Unity

例如在一个android项目中,点击一个按钮,启动unity for android。


1、首先在Unity 引擎中将Unity3D项目build一下,需要在build settings——> platform中选择Android平台。编译好, 就会在Unity3D项目的目录下\Temp\StagingArea中自动生成一个Android工程目录结构的包,这个包就是Android项目需要引用的包 Android启动Unity_第1张图片


2、根据unity3d项目..\Temp\StagingArea的目录包,在Eclipse中的新建一个项目,这个项目是根据Android Project from Existing Code 进行创建的项目

Android启动Unity_第2张图片

这个Existing Code Root Directory就是unity3d项目下的..\Temp\StagingArea这个目录,并将这个项目设置为Library

Android启动Unity_第3张图片


3、将这个Library项目中的assets目录下bin目录与libs目录拷贝到需要整合的Android项目中的assets目录下

Android启动Unity_第4张图片

4、需要与Unity3D进行整合的Android项目需要引用刚才的Library 

Android启动Unity_第5张图片

5、最后把Unity3D安装目录如..\Unity\Editor\Data\PlaybackEngines\androidplayer\bin目录下的classes.jar拷贝到Android项目下libs的目录下,并引用它。

Android启动Unity_第6张图片

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开发界面

你可能感兴趣的:(Android,android,call,unity)