IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: GameObjecty ve scriptech pro Unity

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Miroslav Mazal:11.9.2018 16:37

Zdravím. Umím sice dosáhnout svého cíle, který funguje, ale nevím, jestli to nejde lepším způsobem. Je pravda toto? Když chci zobrazit obrázek (GameObject) příkazem z GameManagera, musí ten GameObject být ke GameManageru připojen. Jde o to, že mám dost různých obrázků, a tak se mi nahromadilo zhruba 30 GameObjectů než začne script GameManagera Startem. Říkal jsem si, jestli nejde vytvořit třeba jinou třídu, kde budou GameObjecty uloženy, a pak vždy zavolat pro zobrazení potřebného GameObjectu(o­brázku) ve scéně.

Zkusil jsem: Různě.

Chci docílit: Ušetřit místo na začátku GameManagera.

 
Odpovědět
11.9.2018 16:37
Avatar
Mára
Člen
Avatar
Odpovídá na Miroslav Mazal
Mára:11.9.2018 17:07

Ahoj,
určitě bych si vytvořil jinou třídu, třeba GameObjectManager, mohla by vypadat nějak takhle, píšu z hlavy, takže no hate.

public class GameObjectManager
{

private List<GameObject> gameObjects = new List<GameObject>();
public ReadOnlyCollection<GameObject> GameObjects
{
  get{ return gameObjects.AsReadOnly();}
}

public GameObjectManager(List<GameObject> gameObjects)
{
this.gameObjects = gameObjects;
}
}

Toho GameObjectManagera pak můžeš používat tak, že mu v konstruktoru předáš ty GameObjecty a pak si je bereš, kdy potřebuješ.

Editováno 11.9.2018 17:07
 
Nahoru Odpovědět
11.9.2018 17:07
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Miroslav Mazal
Martin Petrovaj:11.9.2018 17:16

Oveľa praktickejšie je podľa mňa buď:

  1. Ak ten objekt už máš niekde v scéne, len ho chceš zviditeľniť / skryť, tak si ho môžeš nájsť klasicky podľa tagu cez GameObject.Fin­dGameObjectsWit­hTag a odtiaľ vyfiltrovať ten jeden, ktorý chceš (napr. podľa mena), hodilo by sa ich možno niekde cachovať, napr. v private List<GameObject> images alebo niečo podobné
  2. Ak ich máš uložené ako prefaby, tak ich môžeš dať do priečinka Resources a odtiaľ ich počas hry načítať, viď:

https://docs.unity3d.com/…Runtime.html
https://docs.unity3d.com/…es.Load.html
https://forum.unity.com/…load.393752/

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
11.9.2018 17:16
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovídá na Martin Petrovaj
Miroslav Mazal:11.9.2018 18:52

Díky. Z praktického ohledu si zkusím nastudovat obě možnosti. Třeba se někdy bude hodit jedna a jindy druhá. Zatím díky. Jdu se to snažit naučit.....

 
Nahoru Odpovědět
11.9.2018 18:52
Avatar
Odpovídá na Martin Petrovaj
Miroslav Mazal:11.9.2018 18:55

Můžu se ještě zeptat na jednoduše vyjádřené shrnutí, jaký je rozdíl mezi GameObject ve scéně, ke kterému připojím Sprite a Prefabem? Pořád si nejsem jistý, jestli plně chápu tu podstatu.

 
Nahoru Odpovědět
11.9.2018 18:55
Avatar
Miroslav Mazal:11.9.2018 21:28

Tak jsem si vytvořil první část hry. Něco jako kostka, ale je to kulaté :-) Mohu si definovat vlastní čísla a znaky. Míchání a výběr probíhá stisknutím klávesy (space). Vytvořil jsem různé scripty např. časovač, náhodný výběr, GameManager. Taky animační klip míchání čísel. A další.
https://www.youtube.com/watch?…

 
Nahoru Odpovědět
11.9.2018 21:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.