- Home /
AddComponent() at runtime - variable not being initialized from Inspector
Hello there,
I'm new to Unity and C#.
I have a c# script that exposes a public GameObject variable. I then set this by dragging a prefab onto the variable in the Inspector.
When adding the script to an existing GameObject using AddComponent() during level start the script variable is initialized correctly from the Inspector entry, and the gameObject variable is Instantiatable from the component's Start() call.
However, when adding the script to the same GameObject at runtime the Component's public GameObject variable is NOT initialized properly and is left NULL, thus throwing a null exception during Instantiation.
Is this behavior to be expected? Is there a way round this? (the only ugly solution I could think of would be to pass the component a gameobject reference through a custom Init() function).
Thanks to you experts!
Richard
Answer by whydoidoit · Mar 13, 2013 at 02:20 PM
I'm afraid that is what happens. The "shortcut" method of setting properties on the script in the inspector does not work when using AddComponent. You either need to script the loading of the core values inside Awake (some people use Resources.Load) or you need some other way of referencing them. A pain I know.
Hi there,
Thanks for the super swift response! I'll look into Resources.Load right away.
Richard
Yes, Resources.Load was exactly what I needed and will solve a lot of similar headaches, thanks WhyDoIDoIt!
Your answer

Follow this Question
Related Questions
Copy collider Component type and parameter to a new Object at runtime 0 Answers
Attach C# Script on runtime 1 Answer
Destroying a LineRenderer component and then adding it again at runtime 4 Answers
Adding Prefab Components 1 Answer
How to instantiate a MonoBehaviour from a downloaded DLL at runtime? 0 Answers