实现unity3d导出到android studio工程并封装为library,供其余工程导入module直接使用。
最终效果:java
最近看了下unity3d,关于unity3d和android端的交互参考了一些资料进行测试,现简单总结记录,同时以供参考。android
软件版本以下:
unity3d:5.5.0f3
android studio:2.2android-studio
using UnityEngine;
using System.Collections;
public class CubeScripts : MonoBehaviour {
/// 定义旋转速度
public float RotateSpeed=45;
/// 定义摄像机的最近距离
private float mNear=2.5F;
/// 摄像机当前距离
private float mDistance=5F;
/// 定义摄像机的最远距离
private float mFar=7.5F;
/// 摄像机的缩放速率
private float mZoomRate=0.5F;
/// 主摄像机
private Transform mCamera;
/// 在Start()方法中咱们设定了游戏体的名称,由于咱们在
/// Android项目中须要用到这个名称,同时获取主相机对象
void Start ()
{
this.name="Main Cube";
mCamera=Camera.main.transform;
}
/// 在Update()方法中咱们让Cube按照必定的速度进行旋转
void Update ()
{
transform.Rotate(Vector3.up * Time.deltaTime * RotateSpeed);
}
/// 定义一个放大的方法供外部调用
public void ZoomIn()
{
mDistance-=mZoomRate;
mDistance=Mathf.Clamp(mDistance,mNear,mFar);
mCamera.position=mCamera.rotation * new Vector3(0,0,-mDistance)+transform.position;
}
/// 定义一个缩小的方法供外部调用
public void ZoomOut()
{
mDistance+=mZoomRate;
mDistance=Mathf.Clamp(mDistance,mNear,mFar);
mCamera.position=mCamera.rotation * new Vector3(0,0,-mDistance)+transform.position;
}
/// 触摸立方体,调用android端的ShowDialog方法
void OnMouseDown()
{
ZoomOut();
Debug.Log("MOUSE DOWN");
using (AndroidJavaClass jc = new AndroidJavaClass("com.oden.u2as.UnityPlayerActivity"))
{
// jc.CallStatic("ShowDialog");
jc.CallStatic("ShowDialog", "str");
}
}
}复制代码
注意修改包名
导出后工程加入如下方法:
为unity工程中预先设置好的调用方法app
public static void ShowDialog(final String string) {
UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("SYD", "ShowDialog: " + string);
AlertDialog.Builder builder = new AlertDialog.Builder(UnityPlayer.currentActivity)
.setMessage("哈哈哈这是Android的原生弹窗")
.setPositiveButton("肯定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
UnityPlayer.UnitySendMessage("Camera", "NativeTipClosed", "");
}
});
builder.show();
}
});
}复制代码
apply plugin: 'com.android.library'
注:遇到报错解决记录:ide
public class MainActivity extends UnityPlayerNativeActivity {
private Button BtnZoomIn, BtnZoomOut;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取显示Unity视图的父控件
LinearLayout mParent = (LinearLayout) findViewById(R.id.UnityView);
//获取Unity视图
View mView = mUnityPlayer.getView();
//将Unity视图添加到Android视图中
mParent.addView(mView);
//放大
BtnZoomIn = (Button) findViewById(R.id.BtnZoomIn);
BtnZoomIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
UnityPlayer.UnitySendMessage("Main Cube", "ZoomIn", "");
}
});
//缩小
BtnZoomOut = (Button) findViewById(R.id.BtnZoomOut);
BtnZoomOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
UnityPlayer.UnitySendMessage("Main Cube", "ZoomOut", "");
}
});
}
}复制代码