Greetings,
currently i have two levels:
- Level 1 is the main menu,with 3 **images** called "glock","deagle" and "uzi" inside a Canvas,each one with a child image called "equip_button".
- Level 2 is a map with enemies and has 3 **GameObjects** also called "glock","deagle" and "uzi",each one with a child object called "flash".
So my objective is when i change from Level 2 to Level 1 the "equip_button" color of the images changes depending of the current weapon:
> Script on the Level 1
On Start():
GameObject[] weapons = GameObject.FindGameObjectsWithTag ("weapon");
In the Update():
foreach (GameObject child in weapons) {
if(current_weapon==child.transform.name)
child.transform.FindChild ("equip_button").GetComponent ().color = new Color (1, 1, 1, 1);
}
but instead,i get an error of "Object reference not set to an instance of an object" in the line where i do the **FindChild("equip_button")**.
Debugging and using another foreach i saw that the 3 objects saved on the "weapons" var are the objects of the Level 1!!!(becouse they had the "flash" child instead the "equip_button").**So my problem is that the Level 1 script is getting the objects of the Level 2,and that's not possible becouse using the Application.LoadLevel() all GameObjects of the Level 2 should be destroyed...**
Take some extra and helpfull info:
- I'm not using the DontDestroyOnLoad method in any object.
- I put on the start() of the Level 1 script a Caching.CleanCache () but didn't work.
- Closing Unity and opening again solves the problem,so i think that this is a memory or cache problem.
- The "glock" "deagle" and "uzi" objects of both levels have the same tag("weapon"),but i'm sure that this is not the problem becouse **before getting Unity 5 and using Mecanim all worked perfectly!**
Thanks for your attention and sorry for my bad english.
↧