Létrehozása játék a szemed

Egy korábbi közleményünkben, azt mondta, hogy szigorítani a játék Lua script nyelv különböző jelenetek. Azonban kölcsön egy ideig, rájöttünk, hogy néha az írás szkriptek válik elég slozhnochitaemy és slozhnootlazhivaemy kódot.

Létrehozása játék a szemed
És gondolunk a vizuális megközelítés. Ebben a cikkben fogok beszélni ismeretségünk vizuális script eszköz Unity - «uScript», képességeit, és megmondja a mi opyte.Da, a fenti képen - a szkript és az áramkört.

Bevezetés. Nos, nézzük meg, mi történt. Az alábbiakban a szkript, amely létrehozza a két karakter a képernyőn, rajz egy egyszerű párbeszédablak, amely a felhasználó 2 választható opciók és elágazás ebben meste.Iskhodnik LUA script vhs.HUD (0) vhs.SwitchZone ( «utca») helyi c1 = CharacterGfx ( ) c1.create ( «c1», «char_big») c1.mirror (0) c1.setpos ( «n_2») c1.animate ( «f_idle»)

helyi c2 = CharacterGfx () c2.create ( «c2», «char_black») c2.mirror (1) c2.setpos ( «n_3») c2.animate ( «f_idle») c2.preset ( «opp_lmb»)

char.animate ( «idle») char.mirror (1) char.setpos ( «n_1»)

c1.say ( «Kell a ruhákat, a csizma és a motocycle») c1.wait_bubble () c2.say ( «Ja!») c2.wait_bubble ()

char.animate ( «f_idle») char.mirror (0)

vhs.ShowMultiAnswer ( «Próbálja elkapni! (futni)», «nem lehet! (start harc)», ») switch_answer

2. eset: vhs.StartFight (77,7) végén,> a játék úgy néz ki, mint ez:

Létrehozása játék a szemed
Alapvetően a fenti szkriptet semmi ok az aggodalomra. De elképzelhető, hogy nem kell 1 vetvenie, hanem kettő. Képzeljük el, hogy ellenőriznie kell, hogy néhány játék lehetőség és ágak script ezek alapján. Ez lehet hamar szeretett.

Ez volt az a pillanat, amit kétségbeesetten akart tenni.

Nézzük csak kapsz egy képernyőt, hogy mi lett a fent LUA script. (Kattintható kép)

Létrehozása játék a szemed

Úgy néz ki, egy kicsit nehézkes, de ha egyszer világos. Mikor, ki és hol keletkezik, így, és ami a legfontosabb látható elágazás.

Például ebben az esetben a játékos választhat két lehetséges választ. A játék, úgy néz ki, mint ez:

Létrehozása játék a szemed

De a rendszer - az alábbiak szerint:

Létrehozása játék a szemed

És azonnal világos, hogy mi történik, ha kiválasztja №2 №1, és válaszoljon a választ. És ha egy ilyen ág több - sokkal inkább a rendszer nem veszíti el egyértelműség.

Elvek uScript. Nézzük gyorsan megy át, amit, mi áll áramkört. Valójában a fő modul (a uScript terminológia nevezik őket «csomópontok») - az esemény (ez általában kezdődik egy script vagy lánc), a cselekvés és változókat.

Létrehozása játék a szemed

At action'on a bemenet (általában 1) és kimenet (ek). Például a legegyszerűbb lépéseket 1 bemenet és 1 kimenet. És egy szál állapot egység - nem lesz két kimenettel, például.

Alsó egység csatlakozik változókat. Triangle azt jelenti, hogy a rekord (output) kerül sor változó.

Például ebben a példában létrehozunk egy karaktert (a «létrehozása char» blokk), majd tegye rá a fényvisszaverő a «valódi» (a «Mirror» blokk):

Létrehozása játék a szemed

By the way, az összes változó lehet egy nevet (ebben az esetben a "C1"). És az összes változó azonos típusú és azonos név szinkronizálva lesz egy script (rendszer). Ie A fenti példa nem teljesen azonos az e:

Létrehozása játék a szemed

Ez úgy történik, hogy mentse meg attól, hogy húzza a kommunikációt a két képernyőn.

Ezen felül, ha kullancs «ki a Unity», a kiválasztott változó nyilvános lesz, és látható lesz a többi szkript (mind vizuálisan, mind saját kezű). A tömbök is támogatott.

Egy kis gyakorlat. Minden modult láthatjuk az ábrán - samopisnye. Mindkét íródtak 1 éjszakára. Nézzük meg őket először kod.Rassmotrim valami nagyon egyszerű. Például, akció, amely az úgynevezett «Kezdés küzdelem». Elkezdi a harc (sőt, a módszer logikai játék), és két paramétert - aydishnik aydishnik küzdelmet, és riválisa.

Létrehozása játék a szemed

Létrehozása játék a szemed

A jobb oldalon látható egy blokkot a konfigurációtól, ahol meghajtók értéket. A 3. blokk bemeneti paraméterek - CharacterGfx (maga a karakter, amit elveszítik az animáció), animáció (cím animáció) és Mirror (szükség zerkalenya). És van két hagyja el a blokkot: Out (kimenet azonnal) és késztermékek (csak akkor, ha az animáció alatt).

Ebben az esetben a változó „a Mirror” egy számlálóra a paraméterek „igen”, „nem” és a „nincs változás”, amely képviseli a legördülő listát a Properties ablakban.

A kód nem különösebben bonyolult lett:

alkalmazásával uScriptEventHandler = uScript_GameObject.uScriptEventHandler;

[FriendlyName ( «helyen»)] nyilvános rendezvény uScriptEventHandler helyen;

nyilvános enum BooleanSet public void In ([FriendlyName ( «CharGfx», «A CharacterGfx.»)] CharacterGfx ch [FriendlyName ( «Animáció», »)] karakterlánc anim_name [FriendlyName («Mirror»,»)] [SocketState (hamis, hamis )] [defaultValue (BooleanSet.NoChange)] BooleanSet tükör)

ch.PlayAnimation (anim_name); if (tükör = BooleanSet.NoChange!) ch.SetMirror (tükör == BooleanSet.True); ch.OnAnimationEndedCallback + = () =>; >> több időt. Minden blokk felett a kimenet (Out) nevezik után azonnal kódok végrehajtását bloka.A, hogy ha azt akarjuk, hogy egy aszinkron művelet? Például a boot színpadon. És a végrehajtását a vizuális script felfüggesztik mindaddig, amíg az aszinkron nem progruz jelenetet.

Ez úgy történik, egyszerű. helyett vonalak

nyilvános bool Out > Melyik a zászló „a script mindig készen áll”, írunk: nyilvános rendezvény uScriptEventHandler Out; így mondja - «Ki most a felvezető, nem az egyre igazi boolean'nom” .A továbbá kódot egy időben, ha készen áll, hogy továbbra is a forgatókönyvet, meg kell hívni a felvezető pontosan ugyanaz, mint volt a Kész az előző példa:

if (Out = null!) Out (ez az új System.EventArgs ()); Nem kell írni a kódot magad. Minden, amit a fent megadott - azt írta nekünk, hogy összegyűjtse, amire szükség van egy kényelmes helyen. De ez általában nem szükséges. A uScript van olyan dolog, úgynevezett «reflexiós». A gyakorlatban ez azt jelenti, hogy uScript automatikusan ellenőrzi a jelenetet, és húz belőle, minden tárgy, valamint a nyilvános módszerek és paraméterek, ami elérheti akár. És biztosítja számukra dostup.Naprimer, itt van, hogy a unit-reflexió GetComponent () metódus a kamera a jelenetet:

Létrehozása játék a szemed

(A lap alján láthatjuk a blokk «ingatlanok», ahol vannak beállítva az összes paraméter a módszer)

Következtetések. Tulsa határozottan tetszett és mi juzat tovább. Valójában néhány ember kezeli, hogy segítsen neki levelet az egész játék, de ez a chur.Naskolko mélyen tudjuk zayuzat azt még nem tudom. Például még nem döntött arról, hogy felülírja a mi lua-orientált vizuális logika küldetést kiváltja.

De itt a scriptek vágott jelenetek és párbeszédek juzat egyedülálló.

Árnyoldala Egyszerre csak egy (ami annak az eredménye, egy plusz) - ahogy korábban írtam, a uScript alakítja vizuális séma C # kódot. És ezért, minden egyes módosítás a rendszer lenne szükség újrafordítás projekt.

A többi - Erősen ajánlott, hogy közelről, hogy ezt az eszközt, ha azt szeretné, megírt egy hasonló logika. Tehát, amennyire én tudom, ez az eszköz aktívan használják írásához AI.

By the way, ha szükség van rá a scriptek a viselkedése és kölcsönhatása tárgyak a helyszínen (pl flip-flop ütközés, stb), akkor megnézzük játékmester. Ő jobban összpontosít az esemény modell.

Minden cikket a sorozat:

Idea Vision, a választás a beállítást, állványok, terjesztési modellek és hasonlók árnyékolók kép stilizáció alatt CRT / LCD csavarozott programozási nyelv a Unity (UniLua) shader halványulni a palettán (a la NES) Részösszeg (prototípus) Beszéljünk PR indie 2D-animációs játékok Unity ( «, mint a flash") A vizuális script jeleneteket a Unity (uScript)