- Home /
Problems getting values from a prefab's script using GetComponent
I have a player prefab and an enemy prefab. They are both instantiated to the scene from an empty game object.
This is for a 2d game like space invaders. I want the enemy(clone) to follow the player(clone) on the x axis.
I'm trying to do this by having the player(clone) have a script attached to it and whenever it moves it sets different private Boolean variables to true/false (depending on its movement). Based on these bool values, the enemy(clone) will move.
I have a bunch of getBool methods.
The enemy(clone) has a script attached to it that has the following fields:
public GameObject gameObject; //I put the player prefab gameObject into it (inspector)
private Player playerScript; //this is for the GetComponent
then I do the getComponent in the enemy script's awake method: playerScript = gameObject.GetComponent ();
After all this, the enemy prefab script doesn't seem to be getting the values from the player prefabs script.
Man I really need help...Thank you!
gameObject is a local variable to the current script and references the game object the script is attached to, just name it something else like "go".
Ahh good eye, didn't catch that on first read. Using 'gameObject' as a variable name is a terrible idea. I still think you only have a reference to the player Prefab though, and not the Instantiated object but can't be sure from what you've shown.
hey thanks for everything! yeah I had a reference to the player Prefab and not the instantiated object.
here is how I fixed it:
void Awake (){ Player = GameObject.Find("PlayerPrefab(Clone)"); playerScript = Player.GetComponent (); }
So ins$$anonymous$$d of putting the player game object into the slot in the inspector( which would of only been a reference to the player prefab), I used GameObject.Find and got the actual instantiated object.
Thanks a bunch!
Answer by getyour411 · Mar 29, 2014 at 09:59 PM
I expect this is because you have a reference to the player prefab (from public GameObject gameObject) but when you instantiate the player that is a different gameObject. The other issue seems to be your GetComponent usage - does your Enemy really have playerScript attached to it? Normally that would be on the player so your GetComponent would need to be prefaced by something like GameObject.Find("Player")....
omg! Thanks ALOT! $$anonymous$$aking public GameObject and putting from inspector isn't working! I've lost 5 days finding what is going on!