Wpis z mikrobloga

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?( ͡° ʖ̯ ͡°)

#unity3d #programowanie
  • 8
@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
@Mithras: jeszcze nie rozwiązałem.
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 :)
Debug.Log("nazwa" + mojaList[mojaLista.Count - 1].gameObject.name);


@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.