Вы здесь
Главная > Мой блог > Unity3d > UI Canvas > Vuforia при добавлении канваса и тиррейна (canvas and terrain)

Vuforia при добавлении канваса и тиррейна (canvas and terrain)

Vuforia при добавлении канваса и тиррейна (canvas and terrain) в маркер, они не отключаются при потере маркера, а остаются “висеть” на экране. Решается эта проблема так:

Since no one reply my question and i already have a solution for this (after extensive searching for the answer on Unity and Vuforia for several days). I want to post the solution.

If you want canvas and  terrain to dissapear after your camera not pointing at your image target, then you can follow this method.

1. Attach DefaultTrackableEventHandler.cs file to your ImageTarget

2. Open the script

3. Scroll until you find private void OnTrackingFound()

4. Input this code (under Collider[] line)

For Terrain

Terrain[] terrainComponents = GetComponentsInChildren<Terrain>();
foreach (Terrain component in terrainComponents)
{
component.enabled = true;
}

For Canvas

Canvas[] canvasObjects = GetComponentsInChildren<Canvas>();

foreach(Canvas canvas in canvasObjects)
{
canvas.enabled = true;
}

6. Then Scroll to private void OnTrackingLost()

For Terrain

Terrain[] terrainComponents = GetComponentsInChildren<Terrain>();
foreach (Terrain component in terrainComponents)
{
component.enabled = false;
}

For Canvas

Canvas[] canvasObjects = GetComponentsInChildren<Canvas>();

foreach(Canvas canvas in canvasObjects)
{
canvas.enabled = false;
}
7. If you have multiple Canvas that you use for your project, you can create empty Gameobject and rename it to parentObject or whatever you want, then put your canvas (that you want to hide after tracking lost)  under it as a child. Open your DefaultTrackableEventHandler.cs
8. Create public GameObject parentObject; above private void OnTrackingFound()
9. Then input this code under private void OnTrackingFound()
Canvas[] canvasObjects = parentObject.GetComponentsInChildren<Canvas>();
foreach(Canvas canvas in canvasObjects)
{
canvas.enabled = true;
10. Then go to private void OnTrackingLost()
Canvas[] canvasObjects = parentObject.GetComponentsInChildren<Canvas>();
foreach(Canvas canvas in canvasObjects)
{
canvas.enabled = false
I hope this can help other noobie coder like me. Thank you very much. If you have any question i will try to answer (with my limited knowledge) 😀 and I know my english sux 😛

Добавить комментарий

Top