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!


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.