c# - How to modify List<> between two classes in unity? -


in unity i'm making program allows click on cube , select spheres represent vertices shown below:

cube vertices

once theses spheres selected added list selectedspheres of type gameobject.

i've created 2 class files - cube.cs , vertex.cs. vertex inherits cube inherits monobehaviour. in cube have member list stores selected spheres.

i have defined function addtoselected() adds input selectedspheres list. print statement inside function prints off true every single time. print statement in update() function prints argument out of range error shown below while addtoselected() has shown has worked 8 times:

error

the addtoselected() function called onmousedown() function inside vertex class. code both classes shown below:

cube.cs

public class cube : monobehaviour {      bool isselected = false;     gameobject[] spheres;     list<gameobject> selectedspheres = new list<gameobject>();      public void addtoselected(gameobject obj) {         selectedspheres.add(obj);         print(selectedspheres.contains(obj));     }      public void removeselected(gameobject obj) {         selectedspheres.remove(obj);     }      public void clearselected() {         selectedspheres.clear();     }      // update called once per frame     void update() {         if(input.getkeydown(keycode.space)) {             print(selectedspheres[0]);         }     }  } 

vertex.cs

public class vertex : cube {      void onmousedown() {         // object clicked -         renderer rend = getcomponent<renderer>();          if (rend.material.color != color.red) {             rend.material.color = color.red; // #d96459             addtoselected(this.gameobject);          } else {             rend.material.color = color.white;             removeselected(this.gameobject);         }     } } 

since vertex inherits form cube , cube has update function

void update() {     if(input.getkeydown(keycode.space)) {         print(selectedspheres[0]);     } } 

the statement print(selectedspheres[0]); executed inside of objects inherit cube everytime press space key. in (or most) instances of vertex selectedspheres empty, why argument out of range error. also, have defined selectedspheres list every instance of cube (and therefore vertex). have 9 instances of selectedspheres in sample scene. shortest way fix declare selectedspheres static. then, have 1 list instances of cube/vertex.

so go ahead , try:

static list<gameobject> selectedspheres = new list<gameobject>(); 

Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -