1. 程式人生 > >Unity3d EasyAR開發案例系列教程

Unity3d EasyAR開發案例系列教程

這篇文章介紹如何使用EasyAR.unitypackage配置EasyAR

參考資料

EasyAR入門

EasyAR是好用免費的全平臺AR(Augmented Reality,增強現實)引擎。

EasyAR支援使用平面目標的AR,支援1000個以上本地目標的流暢載入和識別,支援基於硬解碼的視訊(包括透明視訊和流媒體)的播放,支援二維碼識別,支援多目標同時跟蹤。

EasyAR支援PC和移動裝置等多個平臺,EasyAR不會顯示水印,也沒有識別次數限制。

在拿到EasyAR package或EasyAR樣例之後,你需要一個key才能使用。請確保在使用EasyAR之前閱讀以下內容。

免費註冊

使用EasyAR之前需要使用郵箱在www.easyar.cn註冊

*如果郵箱已經在視+官網(www.sightp.com )註冊,可以直接登入。

KEY的獲取

準備好識別圖之後,我們需要到官網(http://www.easyar.cn/view/open/app.html)來為我們的AR APP申請key。首先點選 “開發中心” 
這裡寫圖片描述
點選 “新增 SDK license Key” 按鈕,選擇Basic 版本 
這裡寫圖片描述 
接下來填寫應用詳情,填寫你的應用名字與打包移動平臺時必填的package name 
這裡寫圖片描述 
確定好後,我們可以檢視我們的Key 
這裡寫圖片描述
1.可以對應用名稱進行修改 
2.可以對Bundle ID 進行修改 
3.若使用的是1.0的sdk,可以檢視1.0的 Key

匯入EasyAR的SDK

我們到EasyAR官網(http://www.easyar.cn/view/download.html)上下載”EasyAR2.0 package(for unity)” 
這裡寫圖片描述
當然也可以在這裡直接下載整理好的 
http://pan.baidu.com/s/1dFGaHGH 
解壓之後,我們將”EasyAR_SDK_2.0.0_Basic.unitypackage”匯入到unity中 
這裡寫圖片描述 
匯入之後,效果如圖: 
這裡寫圖片描述

使用步驟

  1. 找一張圖片當做識別圖,自己的照片也可以哦,推薦顏色不要單一的識別圖,不然一種顏色識別不到就尷尬了。然後在Unity裡建立一個名叫StreamingAssets的資料夾,把圖片拖在這裡。另外再拖一次放在Assets下。 
    這裡寫圖片描述

    這裡寫圖片描述

    1. 接下來我們刪除原有場景的”Main Camera”,然後開啟EasyAR資料夾,把Prefabs資料夾下的EasyAR_Startup預設體拖到面板 
      這裡寫圖片描述這裡寫圖片描述

    2. 中面板上的EasyAR_Startup,修改它的屬性,把我們之前複製的key貼上進去 
      這裡寫圖片描述 
      這裡寫圖片描述

  2. 找到Primitives資料夾下的ImageTarget預設,把它也拖到面板。把ImageTarget上的ImageTargetBehaviour指令碼刪掉,新建一個指令碼EasyImageTargetBehaviour,拖到ImageTarget物體上

  3. 編寫指令碼EasyImageTargetBehaviour

using UnityEngine;

namespace EasyAR
{
    public class EasyImageTargetBehaviour : ImageTargetBehaviour
    {
        protected override void Awake()
        {
            base.Awake();
            TargetFound += OnTargetFound;
            TargetLost += OnTargetLost;
            TargetLoad += OnTargetLoad;
            TargetUnload += OnTargetUnload;
        }

        void OnTargetFound(TargetAbstractBehaviour behaviour)
        {
            Debug.Log("Found: " + Target.Id);
        }

        void OnTargetLost(TargetAbstractBehaviour behaviour)
        {
            Debug.Log("Lost: " + Target.Id);
        }

        void OnTargetLoad(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)
        {
            Debug.Log("Load target (" + status + "): " + Target.Id + " (" + Target.Name + ") " + " -> " + tracker);
        }

        void OnTargetUnload(ImageTargetBaseBehaviour behaviour, ImageTrackerBaseBehaviour tracker, bool status)
        {
            Debug.Log("Unload target (" + status + "): " + Target.Id + " (" + Target.Name + ") " + " -> " + tracker);
        }
    }
}

6、 接下來,我們填寫如下資訊 
這裡寫圖片描述 
- Path: 識別圖的路徑 
- Name:識別圖的名字 
- Size:識別圖的大小 
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述 
注意,我們一定要將Storage 的格式修改為Assets

關於Storage:

這裡寫圖片描述

7.建一個Cube,顏色改為紅色,Cube的位置在識別圖上方,然後把它拖在ImageTarget下當它的子物體。 
現在運行遊戲,啟用ImageTarget,Cube就顯現出來了。一個簡單的AR就做成了。(EasyAR就這點比較好,可以在Unity裡面看效果)。 
在以後的開發裡也可以通過控制ImageTarget的啟用和不啟用讓物體顯現和消失,抑或怎麼去顯現。 
這裡寫圖片描述 
這裡寫圖片描述

8.打包成APK,File–buildsetings,場景拖進去,選擇,點選Playerseting,設定一下引數: 
我們填寫好資訊,注意Compang Name 與我們申請key時的公司或團隊名相同(比如我申請時填的是:mars),Product Name 也要和我們申請key時填的應用名相同(本次的專案演示為:HelloAR) 
這裡寫圖片描述 
我們的Bundle Identifier 也要修改為 
這裡寫圖片描述 
最後是最關鍵的一部分:我們的Graphics API 使用的是 OpenGLES2 
這裡寫圖片描述

9.OK,現在把打包好的APK安裝在Android手機上,執行,掃面這張識別圖,你的模型就出來了。 
怎麼樣小夥伴們,你會了嗎?

EasyAR應用-多圖識別

這裡寫圖片描述

開發資源:

Step 1:新建專案匯入sdk

我們新建一個unity專案,命名為”ARMultiTarget” 
這裡寫圖片描述
接著匯入我們的EasyAR 2.0 package並進行基本環境的搭建,首先我們像上次操作一樣,在unity中新建一個資料夾,命名為”StreamingAssets”,將我們的識別圖匯入到該檔案目錄下 
這裡寫圖片描述 
刪除原有的”Main Camera”,將我們的”EasyAR_ImageTracker-1-MultiTarget” 拖到面板中 
這裡寫圖片描述 
接著我們到官網申請Key填寫到相機上 
這裡寫圖片描述

Step 2:處理相機

我們要編寫段指令碼來處理EasyAR 的多圖識別功能,在”EasyAR_ImageTracker-1-MultiTarget” 元件上新建一個指令碼”HelloARTarget” 
這裡寫圖片描述 
指令碼下載: https://pan.baidu.com/s/12tf0aEVwW9Z2AUjK4qJR6Q 密碼:wg2n 
指令碼具體內容如下:

using UnityEngine;
using EasyAR;

namespace EasyARSample
{
    public class HelloARTarget : MonoBehaviour
    {
        private const string title = "Please enter KEY first!";
        private const string boxtitle = "===PLEASE ENTER YOUR KEY HERE===";
        private const string keyMessage = ""
            + "Steps to create the key for this sample:\n"
            + "  1. login www.easyar.com\n"
            + "  2. create app with\n"
            + "      Name: HelloARMultiTarget-SameImage (Unity)\n"
            + "      Bundle ID: cn.easyar.samples.unity.helloarmultitarget.si\n"
            + "  3. find the created item in the list and show key\n"
            + "  4. replace all text in TextArea with your key";

        private void Awake()
        {
            if (FindObjectOfType<EasyARBehaviour>().Key.Contains(boxtitle))
            {
#if UNITY_EDITOR
                UnityEditor.EditorUtility.DisplayDialog(title, keyMessage, "OK");
#endif
                Debug.LogError(title + " " + keyMessage);
            }
        }
    }
}

Step 3: 處理ImageTarget

我們準備兩張識別圖 
這裡寫圖片描述這裡寫圖片描述 
接下來我們拖動一個”ImageTarget”元件到面板中 
這裡寫圖片描述 
我們像之前最基礎操作的那樣處理好ImageTarget,使得可以顯示一個model(不懂的可以看看之前的教程:EasyAR基礎入門之顯示模型),我們在其下面新建一個cube,具體效果如下圖: 
這裡寫圖片描述 
我們再建一個ImageTarget,改變識別圖和cube的材質,效果如圖: 
這裡寫圖片描述 
這裡寫圖片描述 
最後我們Build 測試就可以實現預覽的效果了。 
這裡寫圖片描述

EasyAR多圖識別簡單案例—雙卡battle1.0

本次的案例是雙卡battle1.0,適合AR開發初學者,主要目的是幫助大家更進一步瞭解EasyAR 多圖識別的應用場景,在往後的技術分享我們會推出完整的AR battle 案例。

預覽:

這裡寫圖片描述

開發功能描述:

當兩張識別圖相碰時,出現“戰鬥開始”的提示,兩個怪物播放各自的動畫

開發素材

Step 1:開發環境搭建

我們在前面已經瞭解瞭如何用EasyAR SDK來開發多圖識別,本次的案例是在此基礎上進行開發的,當然了我們也可以在EasyAR的官方案例進行開發(兩種方法大同小異).上次我們的專案框架如圖: 
這裡寫圖片描述
將所需的模型資源匯入到我們的專案中,目錄結構為: 
這裡寫圖片描述

Step 2:模型的設定

將我們準備好的模型分別替換Cube,並適當修改它們的Scale 與 rotation,效果如圖: 
這裡寫圖片描述
我們分別對兩個模型進行引數設定,首先對ImageTarget 下的模型設定Scale 與 Rotation 
這裡寫圖片描述 
我們還需要對它的Animation修改,在本次案例中,我們只需要”n2017_idle” 與”n2017_skill_2”。效果如圖: 
這裡寫圖片描述 
還需將”n2017_skill_2” 這個Animation 的”Wrap Mode “設定為”Loop” 
這裡寫圖片描述 
另外一個模型的設定也是這樣,大家自行設定,所需的Animation 為”Standby”和”Attack3” 
這裡寫圖片描述 
然後接著為兩個模型新增Box Collider,並勾選Is Trigger,在這裡,我們需要設定Box Collider 的大小,使得長度稍稍大於圖片的寬度,方便我們的碰撞檢測,給大家一個參考的數值: 
這裡寫圖片描述 
為了使用OnTriggerEnter() 方法,我們還需在一個模型身上掛一個RigidBody 元件 
這裡寫圖片描述

Step 3:編寫指令碼

我們建立個label 
這裡寫圖片描述 
修改label文字內容為“戰鬥開始” 
這裡寫圖片描述 
效果如圖: 
這裡寫圖片描述 
然後我們在Label 上新增一個Tween-Alpha 指令碼來 
這裡寫圖片描述 
我們調整我們Alpha 從0變到1,並且設定動畫時長為2s。 
這裡寫圖片描述 
接著我們編寫新建程式碼”PlayAnim”,實現當兩張識別圖靠近時,出現這個title,即label,首先我們要將label 設為不可見: 
這裡寫圖片描述 
然後編寫程式碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayAnim : MonoBehaviour {

    public TweenAlpha label;
    // Use this for initialization
    void Start () {

    }  
    // Update is called once per frame
    void Update () {    
    }
    void OnTriggerEnter(Collider col) 
    {    
        label.gameObject.SetActive (true);
        label.PlayForward ();
    }

}

通過碰撞檢測,我們處理label 的顯示——首先是設定label為可見,接著播放它的Tween–Alpha 動畫,即Alpha 在2s內從0–1,即兩張識別圖靠近之後,“戰鬥開始”這幾個字在2s內出現。

當顯示完後,我們不希望它一直出現,所以我們需要處理它的隱藏。我們在這個指令碼基礎上寫一個方法:

public void Hide()
    {
        label.gameObject.SetActive (false);
    }

然後呼叫,操作方法類似unity 給Button新增方法。 
這裡寫圖片描述 
最後我們再來實現動畫的互動,程式碼相對簡單,屬於unity最基本東西

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayAnim : MonoBehaviour {
    private Animation anim;
    // Use this for initialization
    void Start () {
        anim = GetComponent<Animation> ();
    }  
    // Update is called once per frame
    void Update () {    
    }
    void OnTriggerEnter(Collider col) 
    {
        anim.Play ("n2017_skill_2");
        col.gameObject.GetComponent<Animation> ().Play ("Attack3");
    }
}

EasyAR開發技巧—模型互動操作

AR 開發中常用的互動功能總結

我們在EasyAR 初學者入門系列的第一篇教程中展現了EasyAR 最基本的功能,使得一個模型以AR技術呈現在我們面前,實在炫酷。掃描識別圖之後展現一個模型,如果僅僅是靜態的,體驗效果也不是很好,所以根據市面上的常見AR APP,給大家總結了幾種常見的AR模型的互動方式。我們在最基礎的 HelloAR 這個專案的基礎上進行開發,前提是大家已經掌握好了如何基礎性的搭建EasyAR+unity 的開發方式,不懂得夥伴可以跳轉到:EasyAR 初學者入門指南(1)—顯示模型閱讀。 
關於互動方式,在這裡主要給大家提供思路以及指令碼檔案。

Step 1:匯入專案

我們以後的開發都在EasyAR 的官方專案”HelloAR” 的基礎上進行,首先我們需要到官網上下載並匯入unity中 
這裡寫圖片描述

下載好後,我們將HelloAR 在unity 中開啟 
這裡寫圖片描述 
下載好後,我們將HelloAR 在unity 中開啟 
這裡寫圖片描述

Step 2:點選模型本身互動

預覽: 
這裡寫圖片描述 
實現功能:點選Cube(掃描識別圖出現的模型)我們可以更換它的顏色。

我們先刪除另外兩個不用的ImageTarget,只在”ImageTarget-JsonFile-idback” 身上做文章 
這裡寫圖片描述 
我們新建一個Material,命名為”blue” 
這裡寫圖片描述 
然後在Cube 上新建一個指令碼”ChangeColor”,來實現點選時cube 顏色的改變,這段指令碼屬於unity 最基本的知識,主要是定義兩個Material ,然後在OnMouseDown() 方法中進行修改替換,同時我們也定義了一個布林類的標識位。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeColor : MonoBehaviour {
    public Material blue;
    public Material id;
    private bool isClick = false;
    // Use this for initialization
    void Start () {    
    }
    // Update is called once per frame
    void Update () {   
    }
    void OnMouseDown()
    {
        if (!isClick) {
            this.gameObject.GetComponent<MeshRenderer> ().material = blue;
            isClick = true;
        } else {
            this.gameObject.GetComponent<MeshRenderer> ().material = id;
            isClick = false;
        }
    }
}

這裡寫圖片描述 
Step 2:雙手縮放 
預覽: 
這裡寫圖片描述 
在開發AR APP功能開發時,雙手縮放是最常見的功能,這也是一種最自然的互動手段,實現這樣的功能也非常的簡單,我們在Cube 上掛一個指令碼,命名為”Gesture”

using UnityEngine;
using System.Collections;
public class Gesture : MonoBehaviour {
    private Touch oldTouch1;  //上次觸控點1(手指1)
    private Touch oldTouch2;  //上次觸控點2(手指2)
    void Update()
    {
        //沒有觸控,就是觸控點為0
        if (Input.touchCount <= 0)
        {
            return;
        }     
        //多點觸控, 放大縮小
        Touch newTouch1 = Input.GetTouch(0);
        Touch newTouch2 = Input.GetTouch(1);
        //第2點剛開始接觸螢幕, 只記錄,不做處理
        if (newTouch2.phase == TouchPhase.Began)
        {
            oldTouch2 = newTouch2;
            oldTouch1 = newTouch1;
            return;
        }
        //計算老的兩點距離和新的兩點間距離,變大要放大模型,變小要縮放模型
        float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
        float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);
        //兩個距離之差,為正表示放大手勢, 為負表示縮小手勢
        float offset = newDistance - oldDistance;
        //放大因子, 一個畫素按 0.01倍來算(100可調整)
        float scaleFactor = offset / 100f;
        Vector3 localScale = transform.localScale;
        Vector3 scale = new Vector3(localScale.x + scaleFactor,
            localScale.y + scaleFactor,
            localScale.z + scaleFactor);
        //在什麼情況下進行縮放
        if (scale.x >= 0.05f && scale.y >=0.05f && scale.z >= 0.05f)
        {
            transform.localScale = scale;
        }
        //記住最新的觸控點,下次使用
        oldTouch1 = newTouch1;
        oldTouch2 = newTouch2;
    }
}

Step 3:任意拖動

這樣的功能在市面上的AR APP 中也很常見,比如視+ APP,我們可以快速的將模型拖動到任何位置。我們同樣的在Cube新建段指令碼,命名為”Drag”

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Drag : MonoBehaviour {
    private Vector3 _vec3TargetScreenSpace;// 目標物體的螢幕空間座標

    private Vector3 _vec3TargetWorldSpace;// 目標物體的世界空間座標

    private Transform _trans;// 目標物體的空間變換元件

    private Vector3 _vec3MouseScreenSpace;// 滑鼠的螢幕空間座標

    private Vector3 _vec3Offset;// 偏移

    void Awake() { _trans = transform; }

    IEnumerator OnMouseDown()

    {

        // 把目標物體的世界空間座標轉換到它自身的螢幕空間座標

        _vec3TargetScreenSpace = Camera.main.WorldToScreenPoint(_trans.position);

        // 儲存滑鼠的螢幕空間座標(Z值使用目標物體的螢幕空間座標)

        _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z);

        // 計算目標物體與滑鼠物體在世界空間中的偏移量

        _vec3Offset = _trans.position - Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace);

        // 滑鼠左鍵按下

        while (Input.GetMouseButton(0))

        {

            // 儲存滑鼠的螢幕空間座標(Z值使用目標物體的螢幕空間座標)

            _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z);

            // 把滑鼠的螢幕空間座標轉換到世界空間座標(Z值使用目標物體的螢幕空間座標),加上偏移量,以此作為目標物體的世界空間座標

            _vec3TargetWorldSpace = Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace) + _vec3Offset;

            // 更新目標物體的世界空間座標
            _trans.position = _vec3TargetWorldSpace;
            // 等待固定更新
            yield return new WaitForFixedUpdate();

        }

    }
}

AR互動操作例項—玩轉殭屍

通過視+ APP上的一個案例來了解熟悉AR開發常用的互動技巧

在上一篇的EasyAR 開發技巧—模型互動操作 我們熟悉了比較流行的移動端AR的互動技巧,今天我們在此基礎上繼續深入的瞭解,通過一個類似視+ APP 的一個例項來複習或熟悉AR開發的互動技巧。

預覽:

相關資源:

Step 1:開發準備

下載EasyAR SDK,搭建EasyAR 開發的最基本環境。(前面有基礎教程:EasyAR 初學者入門指南(1)—顯示模型) 
ok,接下來我們刪除unity原有的Main Camera,把EasyAR_Startup的攝像機拖入到面板中。 
這裡寫圖片描述 
接著把匯入的怪物模型拖入面板中(注意:我們這裡並沒有用到Imagetarget,因為不需要識別功能。大家還可以腦洞大開,來為模型的展現增加個緩衝顯示效果,在這裡我就不實現了,主要把AR 移動端的核心知識給大家分享一下) 
這裡寫圖片描述

Step 2:修改相關引數

先修改AR相機的角度,使其X值旋轉270度 
這裡寫圖片描述 
接下來使怪物Y值旋轉180度,並放大2倍,修改預設動畫(也可以不修改,只不過使的看起來效果更驚豔)。 
這裡寫圖片描述 
給怪物新增BoxCollider,並勾選is Trigger

Step 3:實現點選怪物播放動畫實現互動

首先給物體再加一個Animation,根據你自己的喜愛新增相應的Animation 
這裡寫圖片描述 
接下來新建一段程式碼實現動畫互動,程式碼十分簡單,我們在上一篇(互動操作)上講過,大家套用框架就好。

using UnityEngine;
using System.Collections; 
public class PlayAnim : MonoBehaviour 
{        
public Animation anim;        
void Start()        
{                
anim = GetComponent();
}
void Update()
{
if (!anim.isPlaying) {
anim.Play ("2HitCombo");
}
}
void OnMouseDown()
{
anim.Play ("jumpAttack_RM");
}
}

然後我們要實現的是雙指實現縮放,單指任意拖動,這部分的程式碼在前一篇文章(EasyAR開發技巧—模型互動操作)中講過,以後可以把這些當作常用程式碼來使用,會比較方便,直接拖動到模型身上即可。

step 4:點哪走哪

在這裡,我只提供自己的一種實現方法,當然實現這種效果可以有很多方法。 
首先,我們先建一個plane,修改大小為(2,2,2) 
這裡寫圖片描述 
這裡寫圖片描述 
然後,接下來,修改其Tag為Ground 
這裡寫圖片描述 
最重要的一部分,關閉其Renderer,使其不顯示,在這裡我們只要Mesh Collider 
這裡寫圖片描述 
這裡寫圖片描述 
我們先在這個模型新建個指令碼,在這裡我們用射線檢測的方法來實現。 
我們用Input.touchCount 先判斷是否有觸控事件,然後獲取Input.GetTouch(0).position ,觸控手機螢幕的位置,然後射線檢測,實現移動,完整程式碼如下:

using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
private Vector3 clickPosion;
public float speed = 5f;
void Start()
{
clickPosion = transform.position;
}
void Update()
{
if (Input.touchCount > 0) {
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch (0).position);
RaycastHit hit;
Physics.Raycast(ray, out hit);
try
{
if (hit.collider.tag == "Ground") //獲取點選位置的世界座標
{
Vector3 v = hit.point;
clickPosion = new Vector3(v.x, transform.position.y, v.z);
transform.LookAt(clickPosion);
}
}
catch
{
}
iTween.MoveTo(gameObject, clickPosion, 4f);
}
}
}

EasyAR 二維碼+AR的應用

EasyAR實現二維碼+AR的應用第一篇章

二維碼在我們生活總早已是司空見慣了,當AR碰撞上二維碼,一定可以產生好玩的效果。EasyAR對於二維碼的識別與支援是相當不錯的,所以在這一篇與下一篇的教程中,我們會分享如何從零開發二維碼+AR 的應用。

Step 1:開發環境

我們需要新建一個unity專案,並將”EasyAR_SDK_2.0.0_Basic” 的unitypackage匯入,關於EasyAR+unity 這些基礎操作不懂的可以看看之前的文章“EasyAR 初學者入門指南(1)—顯示模型”,在這裡我一筆帶過。匯入之後,我們的unity目錄介面應該是這樣的:

這裡寫圖片描述
我們刪除原有的Main Camera,將”EasyAR_ImageTracker-1_QRCode-1” 拖到面板中。並將官網申請的Key填好。 
這裡寫圖片描述 
觀察”EasyAR_ImageTracker-1_QRCode-1”這個預製體,對比與我們之前常用的”EasyAR_Startup”,發現多了一個”BarCodeScanner” 的部分。 
這裡寫圖片描述 
這裡寫圖片描述 
這裡寫圖片描述 
它上面所掛的指令碼”QRCodeScannerBehaviour”使用來實現二維碼的掃描與識別功能的。這是對於它的具體描述: 
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

Step 2:製作二維碼資源

我們需要準備二維碼的圖片,有許多網站都可以來製作自己的二維碼。我製作的內容大致如下: 
這裡寫圖片描述
大家也可以發揮自己的腦洞,隨意寫些內容,目前我們先實現通過EasyAR SDK 來實現掃描二維碼 顯示文字的功能。

Step 3:編輯程式碼

我們準備好了二維碼,接下來就是在unity裡編輯程式碼來實現功能,首先我們在”EasyAR_ImageTracker-1_QRCode-1” 下新建一個指令碼,命名為”ARIsEasyBehaviour”, 
這裡寫圖片描述 
指令碼下載地址:連結: https://pan.baidu.com/s/1dF5tigx 密碼: 9ag5

using System.Collections;
using UnityEngine;

namespace EasyAR
{
    public class ARIsEasyBehaviour : MonoBehaviour
    {
        private const string title = "Please enter KEY first!";
        private const string boxtitle = "===PLEASE ENTER YOUR KEY HERE===";
        private const string keyMessage = ""
            + "Steps to create the key for this sample:\n"
            + "  1. login www.easyar.com\n"
            + "  2. create app with\n"
            + "      Name: HelloARQRCode (Unity)\n"
            + "      Bundle ID: cn.easyar.samples.unity.helloarqrcode\n"
            + "  3. find the created item in the list and show key\n"
            + "  4. replace all text in TextArea with your key";

        private bool startShowMessage;
        private bool isShowing;
        private string textMessage;

        private void Awake()
        {
            var EasyARBehaviour = FindObjectOfType<EasyARBehaviour>();
            if (EasyARBehaviour.Key.Contains(boxtitle))
            {
#if UNITY_EDITOR
                UnityEditor.EditorUtility.DisplayDialog(title, keyMessage, "OK");
#endif
            
           

相關推薦

Unity3d EasyAR開發案例系列教程

這篇文章介紹如何使用EasyAR.unitypackage配置EasyAR 參考資料 EasyAR入門 EasyAR是好用免費的全平臺AR(Augmented Reality,增強現實)引擎。 EasyAR支援使用平面目標的AR,支援1000個以上本地目標的流暢載入和識別,支援基於硬解碼的視訊(包括透明

【轉載】 C++跨平臺開發乾貨系列教程目錄

版權宣告 --------------------------------------------------------------------------------------------------------------------- 作者: 女兒叫老白 (

python機器學習案例系列教程——聚類演算法總結

全棧工程師開發手冊 (作者:欒鵬) 一、什麼是聚類? 聚類(Clustering):聚類是一個人們日常生活的常見行為,即所謂“物以類聚,人以群分”,核心的思想也就是聚類。人們總是不斷地改進下意識中的聚類模式來學習如何區分各個事物和人。

python機器學習案例系列教程——最小生成樹(MST)的Prim演算法和Kruskal演算法

最小生成樹MST 一個有 n 個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,並且有保持圖連通的最少的邊。 也就是說,用原圖中有的邊,連線n個節點,保證每個節點都被連線,且使用的邊的數目最少。 最小權重生成樹 在一給定

python機器學習案例系列教程——整合學習(Bagging、Boosting、隨機森林RF、AdaBoost、GBDT、xgboost)

可以通過聚集多個分類器的預測結果提高分類器的分類準確率,這一方法稱為整合(Ensemble)學習或分類器組合(Classifier Combination),該方法由訓練資料構建一組基分類器(Base Classifier),然後通過對每個基分類器的預測進行

wxWidgets的安裝與編譯 -《跟我學wxWidgets開發系列教程

開始選單->程式-> Microsoft Visual Studio 2010->Visual Studio Tools ->Microsoft Visual Studio命令提示環境2010 通過命令進入wxWidgets的bu

python機器學習案例系列教程——CTR/CVR中的FM、FFM演算法

全棧工程師開發手冊 (作者:欒鵬) FM問題來源 CTR/CVR預測時,使用者的性別、職業、教育水平、品類偏好,商品的品類等,經過One-Hot編碼轉換後都會導致樣本資料的稀疏性。特別是商品品類這種型別的特徵,如商品的末級品類約有55

python機器學習案例系列教程——k均值聚類、k中心點聚類

上一篇我們學習了層次聚類。層次聚類只是迭代的把最相近的兩個聚類匹配起來。並沒有給出能給出多少的分組。今天我們來研究一個K均值聚類。就是給定分組數目的基礎上再來聚類。即將所有的樣本資料集分成K個組,每個組內儘可能相似,每個組間又儘可能不相似。 k均值聚類和k

python機器學習案例系列教程——極大似然估計、EM演算法

極大似然 極大似然(Maximum Likelihood)估計為用於已知模型的引數估計的統計學方法。 也就是求使得似然函式最大的代估引數的值。而似然函式就是如果引數已知則已出現樣本出現的概率。 比如,我們想了解拋硬幣是正面(head)的概率分佈θθ

python機器學習案例系列教程——關聯分析(Apriori、FP-growth)

關聯分析的基本概念 關聯分析(Association Analysis):在大規模資料集中尋找有趣的關係。 頻繁項集(Frequent Item Sets):經常出現在一塊的物品的集合,即包含0個或者多個項的集合稱為項集。 支援度(Support)

python機器學習案例系列教程——決策樹(ID3、C4.5、CART)

決策樹簡介 決策樹算是最好理解的分類器了。決策樹就是一個多層if-else函式,就是對物件屬性進行多層if-else判斷,獲取目標屬性(類標籤)的類別。由於只使用if-else對特徵屬性進行判斷,所以一般特徵屬性為離散值,即使為連續值也會先進行區間離散

unity3D遊戲開發實戰原創視頻講座系列13之帽子戲法遊戲開發(預告)

mark ack p s post wid user track -a current 文件夾 第一講 遊戲演示項目創建...1 第二講 遊戲場景的編輯...1 第三講 帽子的移動...2 第四講 炮彈的產生...4 第六講 遊戲界面的完好...6 第七講 各種

Cocos2d-x 3.0final 終結者系列教程13-貪食蛇遊戲案例(全)

track print return pla sprint 宋體 能夠 post world 快過節了。謝謝了屈原,我們愛你。 應該多幾個向屈大人一樣跳江的,這

適合0基礎的web開發系列教程-教程概述

技術支持 www zip 就會 通過 b站 tst markup 在線 教程概述 各位網友大家好,我是夜鷹教程網的湯老師,從今天開始,我準備寫一套web前端開發的教程。 適合0基礎的朋友,從最簡單的html開始。 力爭做到學完全套教程能在IT行業就業的水平。 特別適

微信程序開發系列教程(二)使用JavaScript給微信用戶發送消息

邏輯 XML web UNC 百度 ava subscribe 程序開發 內容 我之前的文章 微信程序開發系列教程(一)開發環境搭建 介紹了微信開發環境的搭建,這篇文章我們就來一步步開發一些具體的功能。 功能需求:當有微信用戶關註了您的公眾號之後,您用JavaScript發

webpack4 系列教程(十五):開發模式與webpack-dev-server

作者按:因為教程所示圖片使用的是 github 倉庫圖片,網速過慢的朋友請移步《webpack4 系列教程(十五):開發模式與 webpack-dev-server》原文地址。更歡迎來我的小站看更多原創內容:godbmw.com,進行“姿勢”交流 ♪(^∇^*) 0. 課程介紹和資料 &g

cocos2d x遊戲開發系列教程 坦克大戰遊戲之子彈的碰撞檢測處理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

cocos2d x遊戲開發系列教程 坦克大戰遊戲之虛擬手柄控制坦克移動

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

cocos2d x遊戲開發系列教程 中國象棋03 主介面

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

cocos2d x遊戲開發系列教程 坦克大戰遊戲之坦克和地圖碰撞的檢測上

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!