Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using Vuforia;
public class SimpleCloudHandler : MonoBehaviour,IObjectRecoEventHandler
{
public List<GameObject> models;
public ImageTargetBehaviour ImageTargetTemplate;
private CloudRecoBehaviour mCloudRecoBehaviour;
private GameObject randObj;
private bool mIsScanning = false;
private string mTargetMetadata = "";
private bool isFill = false;
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 FillListModels()
{
try
{
UnityEngine.Object[] sublist = Resources.LoadAll("Prefabs", typeof(GameObject));
foreach (GameObject sublistObjects in sublist)
{
GameObject tempObject = (GameObject)sublistObjects;
models.Add(tempObject);
}
isFill = true;
}
catch (UnityException ex)
{
Debug.Log("Error: " + ex.ToString());
}
}
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.SetParent(ImageTargetTemplate.transform, false);
TargetFinder.CloudRecoSearchResult cloudRecoSearchResult = (TargetFinder.CloudRecoSearchResult)targetSearchResult;
// do something with the target metadata
mTargetMetadata = cloudRecoSearchResult.MetaData;
// stop the target finder (i.e. stop scanning the cloud)
mCloudRecoBehaviour.CloudRecoEnabled = false;
if (ImageTargetTemplate)
{
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)tracker.GetTargetFinder<TargetFinder>().EnableTracking(targetSearchResult,cube);
// enable the new result with the same ImageTargetBehaviour:
}
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
//private void MainMenuUpButton(string label)
//{
// var encoding = System.Text.Encoding.GetEncoding("UTF-8");
// string path = "Assets/Resources/Text_for_Targets.txt";
// StreamReader reader = new StreamReader(path, encoding, true);
// string tempText = reader.ReadToEnd();
// Debug.Log(tempText.IndexOf(label));
// reader.Dispose();
//}
private GameObject GetOutModel(string metadata)
{
if (metadata.IndexOf("text") > -1)
{
randObj = models[0];
randObj.transform.SetParent(GameObject.Find("ImageTarget").transform, false);
randObj.transform.SetPositionAndRotation(randObj.transform.position, Quaternion.EulerRotation(360, 360, 0));
randObj = Instantiate(randObj);
}
else if (metadata.IndexOf("video") > -1)
{
randObj = models[2];
randObj = Instantiate(randObj);
randObj.transform.SetParent(ImageTargetTemplate.transform, false);
}
else { }
return randObj;
}
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;
}
}
}
public void OnStateChanged(bool scanning)
{
mIsScanning = scanning;
if (scanning)
{
// clear all known trackables
var tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
tracker.GetTargetFinder<TargetFinder>().ClearTrackables(false);
Destroy(randObj);
}
}
// Start is called before the first frame update
void Start()
{
//FillListModels();
CloudRecoBehaviour cloudReco = GetComponent<CloudRecoBehaviour>();
mCloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();
if (mCloudRecoBehaviour)
{
mCloudRecoBehaviour.RegisterEventHandler(this);
}
}
// Update is called once per frame
void Update()
{
}
public void OnInitialized(TargetFinder targetFinder)
{
Debug.Log("Cloud Reco initialized " + targetFinder.ToString());
}
}
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using Vuforia;
public class SimpleCloudHandler : MonoBehaviour,IObjectRecoEventHandler
{
public List<GameObject> models;
public ImageTargetBehaviour ImageTargetTemplate;
private CloudRecoBehaviour mCloudRecoBehaviour;
private GameObject randObj;
private bool mIsScanning = false;
private string mTargetMetadata = "";
private bool isFill = false;
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 FillListModels()
{
try
{
UnityEngine.Object[] sublist = Resources.LoadAll("Prefabs", typeof(GameObject));
foreach (GameObject sublistObjects in sublist)
{
GameObject tempObject = (GameObject)sublistObjects;
models.Add(tempObject);
}
isFill = true;
}
catch (UnityException ex)
{
Debug.Log("Error: " + ex.ToString());
}
}
public void OnNewSearchResult(TargetFinder.TargetSearchResult targetSearchResult)
{
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.SetParent(ImageTargetTemplate.transform, false);
TargetFinder.CloudRecoSearchResult cloudRecoSearchResult = (TargetFinder.CloudRecoSearchResult)targetSearchResult;
// do something with the target metadata
mTargetMetadata = cloudRecoSearchResult.MetaData;
// stop the target finder (i.e. stop scanning the cloud)
mCloudRecoBehaviour.CloudRecoEnabled = false;
if (ImageTargetTemplate)
{
ObjectTracker tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)tracker.GetTargetFinder<TargetFinder>().EnableTracking(targetSearchResult,cube);
// enable the new result with the same ImageTargetBehaviour:
}
mCloudRecoBehaviour.CloudRecoEnabled = true;
}
//private void MainMenuUpButton(string label)
//{
// var encoding = System.Text.Encoding.GetEncoding("UTF-8");
// string path = "Assets/Resources/Text_for_Targets.txt";
// StreamReader reader = new StreamReader(path, encoding, true);
// string tempText = reader.ReadToEnd();
// Debug.Log(tempText.IndexOf(label));
// reader.Dispose();
//}
private GameObject GetOutModel(string metadata)
{
if (metadata.IndexOf("text") > -1)
{
randObj = models[0];
randObj.transform.SetParent(GameObject.Find("ImageTarget").transform, false);
randObj.transform.SetPositionAndRotation(randObj.transform.position, Quaternion.EulerRotation(360, 360, 0));
randObj = Instantiate(randObj);
}
else if (metadata.IndexOf("video") > -1)
{
randObj = models[2];
randObj = Instantiate(randObj);
randObj.transform.SetParent(ImageTargetTemplate.transform, false);
}
else { }
return randObj;
}
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;
}
}
}
public void OnStateChanged(bool scanning)
{
mIsScanning = scanning;
if (scanning)
{
// clear all known trackables
var tracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
tracker.GetTargetFinder<TargetFinder>().ClearTrackables(false);
Destroy(randObj);
}
}
// Start is called before the first frame update
void Start()
{
//FillListModels();
CloudRecoBehaviour cloudReco = GetComponent<CloudRecoBehaviour>();
mCloudRecoBehaviour = GetComponent<CloudRecoBehaviour>();
if (mCloudRecoBehaviour)
{
mCloudRecoBehaviour.RegisterEventHandler(this);
}
}
// Update is called once per frame
void Update()
{
}
public void OnInitialized(TargetFinder targetFinder)
{
Debug.Log("Cloud Reco initialized " + targetFinder.ToString());
}
}
Выводит ошибку что в строке
Синтаксис:
Используется csharp
ImageTargetBehaviour imageTargetBehaviour = (ImageTargetBehaviour)tracker.GetTargetFinder<TargetFinder>().EnableTracking(targetSearchResult,cube);
Синтаксис:
Используется csharp
tracker.GetTargetFinder<TargetFinder>().ClearTrackables(false);