I’ve got a CameraController class that has a number of public variables that have GameObjects and a Canvas passed into their ‘slots’ in the Unity Editor. It’s all working fine when I ‘press play’ and test it in Unity.
There’s a problem when I go to build my game; By checking the ‘output_log.txt’ file in the _Data folder of my build I can see that ONE of the GameObjects is 'Debug.Log’ing as non-existent. This is causing follow-on problems with my heads up display.
Here’s the Start function of my CameraController class:
void Start () {
Debug.Log("CameraController.Start called <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
canvas = canvas.GetComponent<Canvas> ();
GameObject.Find("Player").GetComponent<Camera>().nearClipPlane = 0.001f;
//_hudCameraGameObject = GameObject.Find("HUD Camera");
Debug.Log("CameraController.Start: _hudCameraGameObject = "+_hudCameraGameObject);
Debug.Log( "CameraController.Start: _hudCameraGameObject.GetComponent<Camera>() = "+_hudCameraGameObject.GetComponent<Camera>() );
_hudCamera = _hudCameraGameObject.GetComponent<Camera>();
}
As you might notice, I HAD _hudCameraGameObject set via a GameObject.find but this also wasn’t working in the build so I’ve commented it out temporarily and went for the passing-the-GameObject-via-Unity-Editor option. The _hudCameraGameObject GameObject variable is public and the accessible slot in Unity Editor is filled with a GameObject. The 'Debug.Log’s in the Start function are displaying, but _hudCameraGameObject displays as empty and the line where Debug.Log looks for its Camera component throws an ‘Object reference not set to an instance of an object’ error. (Obviously because _hudCameraGameObject doesn’t exist, apparently).
Frustratingly, once again, this all works fine testing it in Unity. It’s only in the (more important) build that it fails.
Anyone had this happen and know what’s up?