您的位置:首页 > 移动开发 > Unity3D

QCAR 基于vuforia做扩展 Unity - Android Plugins

2014-07-23 15:32 267 查看
如何为unity写android插件,集成到基于vuforia。

接下来,我们按步骤操作:

1、创建一个unity项目,为便于参考我们称它为“VuforiaUnity”。

2、为unity导入Vuforia的实例包。

3、在Eclipse中创建一个新的Android项目,为便于参考编写AndroidPlugin,设MainActivity为“MyPluginActivity”。

4、在Eclipse中右键单击项目,去Properties > Java Build Path > Libraries,并添加以下两个库的外部jar(位于Assets/Plugins/Android/下的unity项目):Vuforia.jar和QCARUnityPlayer.jar

5、打开MyPluginActivity.java,修改成一下代码
package com.qualcomm.plugins;

import android.os.Bundle;
import android.widget.Toast;
import com.qualcomm.QCARUnityPlayer.QCARPlayerNativeActivity;

public class MyPluginActivity extends QCARPlayerNativeActivity {
private Handler mUIHandler = null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mUIHandler = new Handler();
}

public void showMessage(final String message) {
mUIHandler.post(
new Runnable() {
public void run() {
Toast.makeText(MyPluginActivity.this, message, Toast.LENGTH_SHORT).show();
}
}
);
}
}


6、右键单击项目,去Properties -> Android,勾选“IsLibrary”复选框将Android项目变成一个Library,这应该使Eclipse生成一个.jar文件,并将其存储在你的Eclipse项目的/bin文件夹中。
7、打开/ bin文件夹并将JAR库的文件夹复制到unity项目的“Assets/Plugins/Android/'”文件夹里。
8、打开并编辑AndroidManifest。xml文件位于相同的“Assets/Plugins/ Android /”目录。
9、mainactivity的名称替换为完全限定的活动名称,例如:“com.my.org.MyPluginActivity”。
10、创建一个c#脚本,称之为MyPluginCaller例如,并附在你的每一个场景中ImageTargets上(如。 Chips, Stones, Tarmac)。
11、复制下面的代码到您的脚本,脚本调用showMessage()方法时MyPluginActivity类目标检测:
public class MyPluginCaller : MonoBehaviour, ITrackableEventHandler {
private TrackableBehaviour mTrackableBehaviour;

void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}

OnTrackingLost();
}

public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
OnTrackingFound();
}
else
{
OnTrackingLost();
}
}

private void OnTrackingFound()
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

//Invoke the "showMessage" method in our Android Plugin Activity
string message = "Detected trackable: " + mTrackableBehaviour.TrackableName;
jo.Call("showMessage", message);
}

private void OnTrackingLost()
{
}
}


ok 现在你的项目应该可以构建并运行在你的Android设备。

参考资料 https://developer.vuforia.com/resources/dev-guide/unity-android-plugins
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息