I realize asking for assistance with Vuforia should probably be done through Vuforia's website, however they never answer a single question related to Cloud Reco from pretty much anyone who has ever asked for assistance. My issue is the inability to have a successful project utilizing Vuforia cloud recognition. I have followed their "How To" step by step, but nothing ever happens. It seems that the entire SimpleCloudHandler script stops at the OnStateChanged method for me. The Vuforia Youtube tutorial on cloud reco is useless when they don't offer any resources to the source files used, and the "teacher" decides to use his own custom script and does not show how he created it. Could someone please help walk me, and the rest of the users struggling to implement Vuforia Cloud Recognition, through a step by step process of successfully recognizing at least just one single cloud image. I am a beginner, but I have been figuring out Unity and C# pretty quickly. I appreciate the time and help of anyone who replies! Code (CSharp): using System.Collections; using System.Collections.Generic; using UnityEngine; using Vuforia; public class SimpleCloudHandler : MonoBehaviour, ICloudRecoEventHandler { public ImageTargetBehaviour ImageTargetTemplate; private CloudRecoBehaviour mCloudRecoBehaviour; private bool mIsScanning = false; private string mTargetMetadata = ""; // Use this for initialization void Start() { // register this event handler at the cloud reco behaviour mCloudRecoBehaviour = GetComponent<CloudRecoBehaviour>(); if (mCloudRecoBehaviour) { mCloudRecoBehaviour.RegisterEventHandler(this); } } public void OnInitialized() { Debug.Log("Cloud Reco initialized"); } public void OnInitError(TargetFinder.InitState initError) { Debug.Log("Cloud Reco init error " + initError.ToString()); } public void OnUpdateError(TargetFinder.UpdateState updateError) { Debug.Log("Cloud Reco update error " + updateError.ToString()); } public void OnStateChanged(bool scanning) { mIsScanning = scanning; if (scanning) { // clear all known trackables var tracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); tracker.TargetFinder.ClearTrackables(false); } } // Here we handle a cloud target recognition event public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult) { // do something with the target metadata mTargetMetadata = targetSearchResult.MetaData; print(mTargetMetadata); // stop the target finder (i.e. stop scanning the cloud) mCloudRecoBehaviour.CloudRecoEnabled = false; // Build augmentation based on target if (ImageTargetTemplate) { // enable the new result with the same ImageTargetBehaviour: ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>(); ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)tracker.TargetFinder.EnableTracking( targetSearchResult, ImageTargetTemplate.gameObject); } } void OnGUI() { // Display current 'scanning' status GUI.Box(new Rect(100, 100, 200, 50), mIsScanning ? "Scanning" : "Not scanning"); // Display metadata of latest detected cloud-target GUI.Box(new Rect(100, 200, 200, 50), "Metadata: " + mTargetMetadata); // If not scanning, show button // so that user can restart cloud scanning if (!mIsScanning) { if (GUI.Button(new Rect(100, 300, 200, 50), "Restart Scanning")) { // Restart TargetFinder mCloudRecoBehaviour.CloudRecoEnabled = true; } } } }