- Home /
Classes' public GameObject accessible in Editor test run, NOT in build
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?
Answer by moosefetcher · Jul 16, 2016 at 04:13 PM
Just in case this helps anyone else (and to close this question), I upgraded to the latest version of Unity and, oddly the new version of the scene, in the Editor showed the text objects I had deleted as present, and the hud camera that I'd ADDED as absent. So, I think, somehow the previous version of my project had got a bit 'confused' about which objects were actually present; testing from the Editor worked fine (the noted changes I'd made to the scene were included) - running a 'build', it seemed to think those changes hadn't been made. Anyway, I made those changes AGAIN (re-added a hud camera) and it all seems to be working in the new version of Unity. Just so you know.
Your answer
Follow this Question
Related Questions
how to access a float from one script in other script in different objects 3 Answers
Object reference not set to an instance of an object 3 Answers
Finding nearest and with highest health points 1 Answer
game publishing problem 0 Answers
using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers