Kezdőoldal » Számítástechnika » Programozás » Unity3D-ben hogy érdemes...

Unity3D-ben hogy érdemes tárolni a statikus adatokat? Pl az egységek információit?

Figyelt kérdés

Arra gondolok, hogy például vannak orkok és emberek, és mindegyiknek van 20 egysége, amik rendelkeznek bizonyos tulajdonsággal, és azokat be lehet tölteni a scene loadingelésénél, hogy aztán ha létrehozunk pl. egy Íjász egységet, akkor az ő scriptjét (élet, támadás, stb), az előre betöltött adatok alapján állítsa be.

Az gondolom nem jó megoldás, hogy a scriptben csinálok egy switchet, ahol az egység neve szerint vannak a case-k, és azokon belül állítjuk be az adatokat.

Hogyan érdemes ezeket tárolni?

Még egyszer: Azt szeretném, hogy a scene elején a valamilyen dolog szerint meghatározott fajokat és a hozzájuk tartozó dolgokat (technológia, egységek, stb.) betöltse, és később el lehessen érni őket.

Hogyan valósítsam meg ezeket? Hogyan keressek tutorialokat erről? (nem tudom röviden megfogalmazni)


Előre is köszönöm a válaszokat.


2016. jan. 5. 23:49
 1/3 anonim ***** válasza:
ScriptableObject nek olvass utána, többek között az ilyen helyzetekre lett kitalálva(a hardcodeolás nem jó módszer, hamar kaotikus lesz).
2016. jan. 6. 00:50
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

Igen, valószínűleg ez az ami nekem kell. :)

Nem illik annyira ide, az lenne még a kérdésem, hogyha én nem csak egy list assetet akarok csinálni, amin vannak más assetek, hanem egy listet akarok csinálni, amiben több assetet tartalmazó list van, akkor azt hogyan csinálhatnám meg?

public class SpawnableUnitList : ScriptableObject {

private List<SpawnableUnit> list1, list2;

public List<SpawnableUnit>[] unitList = { list1, list2};

}


Ilyet szeretnék kb.

Már nagyon sok módszerrel próbálkoztam, de sehogy se tudom megoldani.

(Azért kell, hogy könnyedén tudjak végigfutni a unitlisteken nép szerint. Ha pl a játékos népe 1, akkor csak simán unitList[1]-ben lévő unitokon végigszaladok)

2016. jan. 6. 13:09
 3/3 anonim ***** válasza:

Csak most keltem fel, úgyhogy lehet, hogy félreértettelek, de ha jól értem adott egy rts, az egyszerűség kedvéért 2 néppel, és mondjuk x egységgel, és ezeken a népeken\egységeken szeretnél könnyen végigmenni?

Ha ez a helyzet, akkor valószínűleg az a legtisztább megoldás, ha két ScriptableObject et csinálsz - egyet a népeknek, egyet az egységeknek. A "nép" SO tartalmazza a csak a népre jellemző infókat(a kontexus ismerete nélkül fogalmam sincs miket akarnál itt tárolni, de teszem azt megadod a nevét, ha népenként eltérő gui t használsz akkor tárolhatod akár azt is itt, etc), és ide rakhatod a unitList edet. Valahogy így nézne ki az elérése

nation[nationIndex].unitList[unitIndex]


Viszont ha még nem használtál SO-t, akkor az fontos infó, hogy teljesen másképp működik mint pl egy MonoBehavior osztály, csak és kizárólag információtárolásra alkalmas(~nincs se Start(), se Update(), se semmi), ennélfogva nem is tudod simán inspectorból ráhúzni egy gameobject re, ha hozzá akarsz férni az adatokhoz akkor létre kell hoznod egy új osztályt(teljesen mindegy miből származtatod, csak ne a ScriptableObjectből), abban az osztályban hozz létre egy public ScriptableObject változót, insepctorból húzd be az "adatbázisodat", és azon a scripten belül tudod majd elérni az adatokat - ez így komplexnek hangzik, de a gyakorlatban egyszerű, ha valamivel elakadsz írj nyugodtan(de inkább privátot, valószínűleg nem itt nem veszem észre).

2016. jan. 6. 14:16
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!