Quantcast
Channel: Latest Questions on Unity Answers
Viewing all articles
Browse latest Browse all 171066

Can't use any variable from different class/ NullReferenceExcept

$
0
0
Hi everyone! I'm using Vuforia engine with Unity to develop AR apps. I am newbie so got following problems. When I'm trying to get variable from different class in my sources folder. Everything goes well until the target variable is triggered to be change. I have a custom hud which is GUITexture. I want to make it enabled or disabled depending on another class' (Which is ImageTargetTrackabelEventHandler) isBeingTracked boolean variable. During runtime i get error like this: NullReferenceException: Object reference not set to an instance of an object HudBehaviour.Update () (at Assets/Scripts/HudBehaviour.cs) My code is following: HudBehaviour Class: Public class HudBehaviour : MonoBehaviour { public GameObject transfer; private GUITexture hud; private ImageTargetTrackableEventHandler checker; void Awake(){ hud = GetComponent (); checker = transfer.GetComponent (); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (checker.isBeingTracked==true) { hud.guiTexture.enabled=true; } else if (Input.GetKeyDown(KeyCode.A)) { hud.enabled=true; } //else { // hud.enabled=false; // } } } Second, ImageTargetTrackableEventHandler Class is like following: public class ImageTargetTrackableEventHandler : MonoBehaviour, ITrackableEventHandler { #region PUBLIC_MEMBER_VARIABLES public bool isBeingTracked=false; #endregion PUBLIC_MEMBER_VARIABLES #region PRIVATE_MEMBER_VARIABLES private TrackableBehaviour mTrackableBehaviour; #endregion // PRIVATE_MEMBER_VARIABLES #region PUBLIC_METODS void Start() { mTrackableBehaviour = GetComponent(); if (mTrackableBehaviour) { mTrackableBehaviour.RegisterTrackableEventHandler(this); } } /// /// Implementation of the ITrackableEventHandler function called when the /// tracking state changes. /// 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() { isBeingTracked = true; Renderer[] rendererComponents = GetComponentsInChildren(true); Collider[] colliderComponents = GetComponentsInChildren(true); // Enable rendering: foreach (Renderer component in rendererComponents) { component.enabled = true; } // Enable colliders: foreach (Collider component in colliderComponents) { component.enabled = true; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found"); } private void OnTrackingLost() { isBeingTracked = false; Renderer[] rendererComponents = GetComponentsInChildren(true); Collider[] colliderComponents = GetComponentsInChildren(true); // Disable rendering: foreach (Renderer component in rendererComponents) { component.enabled = false; } // Disable colliders: foreach (Collider component in colliderComponents) { component.enabled = false; } Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost"); } #endregion // PRIVATE_METHODS } Please respond anyone who familiar with such problem. Thanks!

Viewing all articles
Browse latest Browse all 171066

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>