教学网站开发应指导方案,安顺网站设计,光电工程东莞网站建设,基于php的个人网站设计论文Barcode Scanner in Unity | Vuforia Library官方教程#xff0c;写的很详细#xff0c;本教程主要参考对象#xff01;
主要实现扫描生活中常见的二维码#xff0c;然后弹出二维码链接#xff0c;当然我们也可以再次回调自定义函数#xff0c;弹出数字内容#xff0c;…Barcode Scanner in Unity | Vuforia Library官方教程写的很详细本教程主要参考对象
主要实现扫描生活中常见的二维码然后弹出二维码链接当然我们也可以再次回调自定义函数弹出数字内容AR内容效果
支持的二维码 局限性
条码扫描组件还定义检测和跟踪的条形码类型。请注意扫描的二维码在屏幕上是二维的它存在UGUI界面中没办法将3D数字内容与二维码对齐或者同步要在世界空间中添加内容请 改用VuMarks或 Barcode、 Ground Plane、 Area Targets或 Instant Image Targets 的组合 。
3.自搭建步骤提前安装Vuforia for Unity sdk
没有安装SDK的请看我的AR01教程【VuforiaUnity】AR01实现单张多张图片识别(Image Targets)召唤数字内容-CSDN博客
01. 层级面板创建两个组件 找到这个脚本调节粗细和选择可以识别的二维码。 02. 创建扫描器
用官网提供的代码即可
创建空脚本注意命名,然后复制下面的代码下面的代码是Vuforia识别二维码内容的核心功能我们也可以在此代码上进行新增回调函数和新增其他功能
using UnityEngine;
using Vuforia;public class SimpleBarcodeScanner : MonoBehaviour
{public TMPro.TextMeshProUGUI barcodeAsText;BarcodeBehaviour mBarcodeBehaviour;void Start(){mBarcodeBehaviour GetComponentBarcodeBehaviour();}// Update is called once per framevoid Update(){if (mBarcodeBehaviour ! null mBarcodeBehaviour.InstanceData ! null){barcodeAsText.text mBarcodeBehaviour.InstanceData.Text;}else{barcodeAsText.text ;}}
}
挂在这里
我们看到变量上需要一个文本框这个文本框就是识别二维码之后的链接文本我们创建一个UGUI的Text (TMP)赋值给这个变量。到此已经实现扫描功能 4.实现多个二维码手动选择其一
和前面类似检查目前场景是否添加了Vuforia组件 ARCamera、 Barcode、 和一个文本 UI - Text (TMP) Barcode挂的脚本 Barcode Behaviour其中第一个Barcode Behaviour是自带的
Barcode Outline Behaviour是点击Add Component添加的因为导入了SDK所以可以找到
BarcodeCollider 是我们创建的官方代码如下主要实现为检测到的二维码添加碰撞器便于未来我们鼠标或者触摸方式下能够通过摄像机的射线检测到点击的二维码
using UnityEngine;
using Vuforia;public class BarcodeCollider : MonoBehaviour
{BarcodeBehaviour mBarcodeBehaviour;MeshCollider mMeshCollider;void Start(){mBarcodeBehaviour GetComponentBarcodeBehaviour();if (mBarcodeBehaviour ! null){mBarcodeBehaviour.OnBarcodeOutlineChanged OnBarcodeOutlineChanged;}}void OnBarcodeOutlineChanged(Vector3[] vertices){UpdateMeshCollider(vertices);}void UpdateMeshCollider(Vector3[] vertices){ if (!mMeshCollider){mMeshCollider gameObject.AddComponentMeshCollider();mMeshCollider.cookingOptions MeshColliderCookingOptions.None;}Mesh mesh new Mesh();mesh.vertices vertices;mesh.triangles new int []{ 0, 1, 2, 0, 2, 3 }; // Creates 2 trianglesmMeshCollider.sharedMesh mesh;}
}
然后
创建 空物体 GameObject 并将其命名为 BarcodeScanner并挂载下面用来扫描二维码的核心脚本这个脚本实现识别二维码内容并呈现在UI的文本框内 创建空脚本BarcodeScanner
using UnityEngine;
using Vuforia;public class BarcodeScanner : MonoBehaviour
{public TMPro.TextMeshProUGUI barcodeAsText;void Update(){if (Input.GetMouseButtonDown(0)){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray.origin, ray.direction, out RaycastHit hit)){barcodeAsText.text hit.collider.GetComponentBarcodeBehaviour().InstanceData.Text;}}}
} 最后把UI文本Text (TMP)给这个脚本变量用于呈现识别后的二维码内容
最终效果 安卓导出设置