Reputation: 1
Hierarchy:
ARCamera
Image target
-Canvas
First start Canvas not show (it good)
Track Image target found, canvas show
but if track image target lost, canvas always show like stuck.
I was change script and see another tutorial
so, I am copy script from defaultTrackableEventHandler.cs to canvas.cs
this is script canvas.cs basic from DefaultTrackableEventHandler.cs
and my canvas name is "Information" (If Needed).
/*==============================================================================
Copyright (c) 2010-2014 Qualcomm Connected Experiences, Inc.
All Rights Reserved.
Confidential and Proprietary - Qualcomm Connected Experiences, Inc.
==============================================================================*/
using UnityEngine;
namespace Vuforia
{
/// <summary>
/// A custom handler that implements the ITrackableEventHandler interface.
/// </summary>
public class canvas : MonoBehaviour,
ITrackableEventHandler
{
#region PRIVATE_MEMBER_VARIABLES
private TrackableBehaviour mTrackableBehaviour;
#endregion // PRIVATE_MEMBER_VARIABLES
#region UNTIY_MONOBEHAVIOUR_METHODS
void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
#endregion // UNTIY_MONOBEHAVIOUR_METHODS
#region PUBLIC_METHODS
/// <summary>
/// Implementation of the ITrackableEventHandler function called when the
/// tracking state changes.
/// </summary>
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
OnTrackingFound();
}
else
{
OnTrackingLost();
}
}
#endregion // PUBLIC_METHODS
#region PRIVATE_METHODS
private void OnTrackingFound()
{
Canvas[] canvasComponents = GetComponentsInChildren<Canvas>(true);
// Enable canvas objects
foreach (Canvas component in canvasComponents)
{
component.enabled = true;
}
}
private void OnTrackingLost()
{
Canvas[] canvasComponents = GetComponentsInChildren<Canvas>(true);
// Disable canvas objects
foreach (Canvas component in canvasComponents)
{
component.enabled = false;
}
}
#endregion // PRIVATE_METHODS
}
}
Upvotes: 0
Views: 1845
Reputation: 2214
Go to DefaultTrackableEventHandler.cs
under your Assests--> Vuforia--> Scripts folder.
You will find two methods namely, OnTrackingFound(),OnTrackingLost().
Under OnTrackingFound(), Add the below codes.
Canvas[] canvasComponents = GetComponentsInChildren<Canvas>(true);
//Enable canvas:
foreach(Canvas component in canvasComponents)
{
component.enabled=true;
}
Under OnTrackingLost(), add the below lines
Canvas[] canvasComponents = GetComponentsInChildren<Canvas>(true);
// Disable canvas:
foreach (Canvas component in canvasComponents)
{
component.enabled = false;
}
NOTE: Make sure your Canvas must be inside ImageTarget folder in project hierarchy!
That's it! You are set! Check with it!
Upvotes: 2