在unity中Vuforia與EsayCodeScanner在移動平臺的使用

由於在項目中需要Vuforia插件中使用二維碼掃描的功能,所以把自己的心得寫下來,爲了以後方便使用和讓其他同志們有更多的借鑑。

如果我們不使用Easy Code Scanner插件做二維碼的掃描功能的話,需要自己在Android和XCode中寫原生的代碼,對於從來沒有寫過的我們是一種痛苦,所以我們可以直接站在巨人的肩膀上來完成所需的功能。

首先我們需要下載Vuforia插件,這個我在這裏就不進行介紹了,直接去它的官網下載就可以了,至於Esay Code

Scanner插件,直接點擊http://download.csdn.net/my進行下載。

(一):Android平臺下

首先,新建一個項目,先導入其中一個插件包,然後在project 視圖中,找到plugins的文件夾,剪切文件夾中的

AndroidManifest.xml,可放在任意文件夾(android配置文件,規定了android的訪問權限,啓動界面等等);

下來再導入另一個插件包。你會發現這個時候又有一個名爲AndroidManifest.xml 的文件。

    之所以分別加載兩個插件,主要原因是兩個插件包都是android 插件,同時導入不做任何處理可能會導

AndroidManifest.xml 這個文件的替換。這樣就可能導致發佈出來的android 應用只能啓動一個界面(就是

在項目運行的時候只能使用一個功能,如果使用另一個得從新退出再進入),不能結合使用兩個插件的功能。

這裏說一下,一開始我也天真的以爲同時導入就能使用,翻來覆去折騰了兩天時間,才找到這個原因,萬惡的配

置文件啊......

    接下來是整理兩個配置文件,分別打開兩個文件(我推薦使用notepad++ 這個軟件,用起來挺順手的),你會

發現都用一個的標籤,這個標籤之中的代碼就記錄了android應用的啓動界面,在配置文件中,每一個activity都是

一個android界面,在application 標籤中,把兩個配置文件的所用activity 標籤整理到一起,然後刪除到其中一個

intent-filter標籤,這裏刪掉的是二維碼掃描的intent-filter標籤,

即activity android:name="com.c4mprod.ezcodescanner.RootActivity"標籤下的啓動界面被刪除。
    接下來就可以結合使用增強現實和二維碼掃碼的功能了。

上面說了這麼多意思就是刪除掉其中一個AndroidManifest.xml文件,然後將另一個的文件修改爲以下代碼:


<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
 android:installLocation="preferExternal"
 android:theme="@android:style/Theme.NoTitleBar"
    android:versionCode="1"
    android:versionName="1.0">
  <uses-feature android:name="android.hardware.camera" />
  <supports-screens
      android:smallScreens="true"
      android:normalScreens="true"
      android:largeScreens="true"
      android:xlargeScreens="true"
      android:anyDensity="true"/>
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.VIBRATE"/>


  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />


  <application
      android:icon="@drawable/app_icon"
      android:label="@string/app_name"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
      android:debuggable="false">
    <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
              android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
    </activity>
    <activity android:name="com.unity3d.player.VideoPlayer"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    </activity>


    <activity android:name="com.c4mprod.ezcodescanner.RootActivity"
        android:label="@string/app_name">
    </activity>
    <activity android:name="com.c4mprod.ezcodescanner.camera.CameraActivity" android:screenOrientation="sensor"/>
    <!--
            To support devices using the TI S3D library for stereo mode we must 
            add the following library.
            Devices that require this are: ODG X6 
        -->
    <uses-library android:name="com.ti.s3d" android:required="false" />
  </application>


  <!--package="com.c4mprod.ezcodescanner"
  android:versionCode="3"
  android:versionName="1.2">-->


  <!--<uses-sdk android:minSdkVersion="8" />


  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.VIBRATE"/>


  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />-->
</manifest>

這一段代碼主要就是對兩個文件進行合併,現在就可以在android平臺下使用了,經過測試的哦!

(二)IOS平臺下:

解決方案:

1:導入到Unity中之後,切換平臺爲IOS,然後把自身的Demo場景進行打包,打包成Xcode工程導入到Xode裏面

2:點開項目,然後在Build Settings中搜索C++ Exceptions ,選項勾選爲Yes

3:打開Build Phases -> Compile Sources,找到

雙擊該文件,標記爲-fno-objc-arc打開方式
然後編輯此文件

修改mLabel.textAlignment = NSTextAlignmentCenter
然後編輯Xocde程序,發現現在只有一個錯誤了,如果沒有錯誤,則到這一步已經成功了,如果有錯誤,請繼續往下
4:如果沒有其他問題,則此時就剩下一個報錯了,也就是如下圖所示:

解決辦法是打開
2015.10.16更新:
錯誤提示:
ARC forbids explicit message send of "autorelease"
解決辦法:

xcode5創建項目時沒有“Use Automatic Reference Counting”的選項,所以自動引用了ARC機制,可以在項目的Build Setting中設置。
如圖所示,將Objective-C Automatic Reference Counting選項修改成NO。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章