Powiedzcie co robię źle, bo już mi nic do głowy nie przychodzi. Mam listę typu GameObject jako pole klasy.
List mojaLista = new List(); Tworzę nową instancję Gameobject i dodaję ją do listy.
GameObject nowyGameObject = Instantiate(prefab.transform, new Vector3(0, createLine, prefab.transform.position.z), transform.rotation) as GameObject; mojaLista.Add(nowyGameObject); Dodaję sobie taką linijkę
Debug.Log("nazwa" + mojaList[mojaLista.Count - 1].gameObject.name); i na scenie pojawia się mnóstwo nowych GameObjectów. Kiedy nie ma tej linijki wszystko działa. Czego tutaj nie rozumiem?( ͡°ʖ̯͡°)
@motorzysta_jarek_syn_lecha: Tak, ale jest zabezpieczone warunkiem, więc nie odpala się cały czas. W dodatku jeśli zakomentuję tę linijkę z Debug.Log to efekt produkowania nowych GameObjectów nie występuje. I w zasadzie to jakiekolwiek odwołanie się do elementu z Listy powoduje to dziwne zachowanie, tak jakby w obiekcie nowyGameObject nie był gameObject tylko metoda Instantiate. Wiem, to nie ma sensu, ale tak to wygląda ( ͡°͜ʖ͡°)
@h3lloya: Dobra bania. :D Rozwiązałeś to jakoś? Tak w ogóle, to chyba nie potrzeba Ci w tej linii: Debug.Log("nazwa" + mojaList[mojaLista.Count - 1].gameObject.name); fragmentu: .gameObject
@h3lloya: Na chłopski rozum to wygląda tak jakby to wywołanie tworzyło obiekty (jeśli tak jest jak piszesz). Być może obiekty są tam tworzone na zasadzie tzw. "efektu ubocznego". Ale ale- nie programuję w unity i się nie znam więc może moje spostrzeżenie jest całkowicie błędne- nie kumam na przykład zapisu 'as GameObject' ;-)
@b0lec: to c#, a zapis as GameObject oznacza rzutowanie. Przy zapisie z nawiasami w przypadku błędu rzutowania rzuci wyjątkiem, a w przypadku "as" wynikiem będzie null.
List mojaLista = new List();
Tworzę nową instancję Gameobject i dodaję ją do listy.
GameObject nowyGameObject = Instantiate(prefab.transform, new Vector3(0, createLine, prefab.transform.position.z), transform.rotation) as GameObject;
mojaLista.Add(nowyGameObject);
Dodaję sobie taką linijkę
Debug.Log("nazwa" + mojaList[mojaLista.Count - 1].gameObject.name);
i na scenie pojawia się mnóstwo nowych GameObjectów. Kiedy nie ma tej linijki wszystko działa. Czego tutaj nie rozumiem?( ͡° ʖ̯ ͡°)
#unity3d #programowanie
Tak w ogóle, to chyba nie potrzeba Ci w tej linii:
Debug.Log("nazwa" + mojaList[mojaLista.Count - 1].gameObject.name);
fragmentu:
.gameObject
To był krzyk rozpaczy :) na początku było bez gameObject, ale efekt był taki sam :)
Wrócę z pracy to wrzucę wieczorem cały kod. Dzięki za zainteresowanie :)
@h3lloya: Na chłopski rozum to wygląda tak jakby to wywołanie tworzyło obiekty (jeśli tak jest jak piszesz). Być może obiekty są tam tworzone na zasadzie tzw. "efektu ubocznego".
Ale ale- nie programuję w unity i się nie znam więc może moje spostrzeżenie jest całkowicie błędne- nie kumam na przykład zapisu 'as GameObject' ;-)