Hi everyone,
I*m looking for a method to get the scene names from the build.
I tried this code, however it gives me “null”.
for(int i=1;i<SceneManager.sceneCountInBuildSettings;++i) {
hintText.GetComponent<Text>().text += i + " : " + SceneManager.GetSceneAt(i).name + "\n";
}
What gives you null? If I had to guess, maybe your GetComponent call.
hairy hairy hairy code!! There’s like 27 things going on in that line.
How to break down hairy lines of code:
http://plbm.com/?p=248
Break it up, practice social distancing in your code, one thing per line please.
As for the actual nullref, the answer is always the same… ALWAYS. It is the single most common error ever.
Don’t waste your life spinning around and round on this error. Instead, learn how to fix it fast… it’s EASY!!
Some notes on how to fix a NullReferenceException error in Unity3D
- also known as: Unassigned Reference Exception
- also known as: Missing Reference Exception
- also known as: Object reference not set to an instance of an object
http://plbm.com/?p=221
The basic steps outlined above are:
- Identify what is null
- Identify why it is null
- Fix that.
Expect to see this error a LOT. It’s easily the most common thing to do when working. Learn how to fix it rapidly. It’s easy. See the above link for more tips.
You need to figure out HOW that variable is supposed to get its initial value. There are many ways in Unity. In order of likelihood, it might be ONE of the following:
- drag it in using the inspector
- code inside this script initializes it
- some OTHER external code initializes it
- ? something else?
This is the kind of mindset and thinking process you need to bring to this problem:
https://discussions.unity.com/t/814091/4
Step by step, break it down, find the problem.
Here is a clean analogy of the actual underlying problem of a null reference exception:
https://discussions.unity.com/t/840647/7
Oh man, really sorry, was writing this post before going to bed.
I sent the wrong code:
for(int i=1;i<SceneManager.sceneCountInBuildSettings;++i) {
hintText.GetComponent<Text>().text += i + " : " + SceneManager.GetSceneByBuildIndex(i).name + "\n";
Debug.Log(SceneManager.GetSceneByBuildIndex(i).name);
}
This is the one I was using. I was just checking what “SceneAt” does and forgot to undo the code.
Really sorry.
And the “Null” is given in the console.
So it’s not “null reference”! It just returns me null.
So my question again.
Despite what code I’m using, is there a way to get all scene names I have in my “Build Settings”?
I only need it for debugging, it’s just a script which lets me easily change scenes.
Ok, so your Debug.Log call is returning null?
Based on the documentation, the scene only gets returned if it has been loaded.
Looks like you could use SceneUtility possibly. I haven’t tried it, so not sure.