- Home /
GameObject.FindGameObjectsWithTag problems
I am trying to change some texture's offset values of some butterflies's wings . The wings are tagged as "wings".
When I run this script I receive this error: UnityException: You are not allowed to call this function when declaring a variable. Move it to the line after without a variable declaration. If you are using C# don't use this function in the constructor or field initializers, Instead move initialization to the Awake or Start function. ButterflyColor..ctor ()
using UnityEngine;
using System.Collections;
public class ButterflyColor : MonoBehaviour {
public GameObject[] wings = GameObject.FindGameObjectsWithTag("wings");
public void SetButterfliesColorsValue(string myButterflyVal){
foreach (GameObject wing in wings) {
if (myButterflyVal == "blue") {
wing.renderer.material.mainTextureOffset = new Vector2(0, 0);
}
else if (myButterflyVal == "orange"){
wing.renderer.material.mainTextureOffset = new Vector2(0.25F, 0);
}
else if (myButterflyVal == "yellow"){
wing.renderer.material.mainTextureOffset = new Vector2(0.5F, 0);
}
else {
wing.renderer.material.mainTextureOffset = new Vector2(0.75F, 0);
}
}
}
}
What is wrong?
Thank you in advance ;-)
Answer by fafase · Apr 02, 2013 at 02:58 PM
Methods/functions cannot be called when declaring a variable. That is :
GameObject obj = GameObject.Find("Object");
will not work EXCEPT!!!! if you do so in a function.
void Start(){
GameObject obj = GameObject.Find("Object");
}
will work. BUT!!! keep in mind the variable reference obj is destroyed at the end o fthe function so if you need outside of it you declare it outside the Start function.
For your case that goes:
using UnityEngine;
using System.Collections;
public class ButterflyColor : MonoBehaviour {
public GameObject[] wings;
void Start(){
wings= GameObject.FindGameObjectsWithTag("wings");
}
public void SetButterfliesColorsValue(string myButterflyVal){
//Your implementation
}
}
Answer by douglasfigueira · Apr 02, 2013 at 04:47 PM
Thank you very much fafase!! From the bottom of my heart, you have saved my day!!! The colors of all butterflies are changing perfectly now!!
Your answer
![](https://koobas.hobune.stream/wayback/20220613095542im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Find Attached GameObjects in an array using tag? 2 Answers
How can I find all objects in scene under tag "Pickup"? 1 Answer
How to spawn an animal at each transform of a gameobject with a tag position in another scene? 0 Answers
How does FindGameObjectsWithTag work? 3 Answers
How do I create a variable for each GameObject that I added to an array by using a loop? 2 Answers