Gellir diffinio gêm drosodd yn anffafriol trwy wrthrych gêm. Mae rheolwr gêm yn gwneud synnwyr am hyn.
Creu gwrthrych yn ffenestr yr hierarchaeth, de-gliciwch y gydran drawsnewid yn ffenestr yr arolygydd a'i osod i Ailosod. Yna enwwch y gwrthrych fel GameManager.
Ychwanegwch gydran newydd a'i enwi GameManager. Mae'r gydran hon yn gyfrifol am newid statws yn y gêm. Gellir cychwyn, stopio neu ailgychwyn y gêm trwy'r Rheolwr Gêm. Gellir gosod cownter sgôr hefyd. Nod y sgript newydd yn yr achos hwn yw ailgychwyn y gêm pan ewch chi gêm drosodd.
Creu eich swyddogaeth newydd eich hun:
endgame gwag
Mae angen ffordd arnoch i gael mynediad i'r GameManager a galw'r swyddogaeth ar waith.
Gyda'r ychwanegiad Debug.Log ("GAMEM DROS"); anfon “Game Over” fel allbwn i gonsol Unity i weld a yw'r swyddogaeth yn cael ei galw ar yr amser iawn.
Er mwyn gallu cyrchu'r swyddogaeth, mae angen Sgript Gwrthdrawiad y Chwaraewr arnoch chi gan y chwaraewr.
Ychwanegwch gydran ar gyfer y Rheolwr Gêm yno:
GameManager cyhoeddus GameManager;
Nesaf, crëwch ragddodiad o'ch cymeriad. Yna dilëwch y chwaraewr o'ch golygfa. Llusgwch y chwaraewr yn ôl i'r olygfa ac fe welwch nad yw'r chwaraewr wedi'i gysylltu â'r GameManager.
Yn y diwedd, nid ydych yn defnyddio newidyn yn yr achos hwn, ond ei ddileu eto.
Rydych chi'n ei ddefnyddio i ddod o hyd i'r GameManager:
FindObjectOfType ();
Rydych chi'n mewnosod hwn ar y pwynt lle rydych chi am i'r gêm ddod i ben.
Mae ganddo swyddogaeth debyg: GetComponent <>
Newid yn sgript y GameManager
endgame gwag
zu
gwagle cyhoeddus Endgame
Nawr gallwch chi wneud y newid yn y sgript PlayerCollision.
Gyda'r MainCamera a TextCanvas, nawr mae'n rhaid i chi lusgo'r chwaraewr i mewn fel bod cyfeiriad at y chwaraewr yn cael ei greu. Fel arall fe gewch neges gwall.
Yn ogystal, dylid arddangos Game Over os yw'r cymeriad yn cwympo oddi ar blatfform, er enghraifft.
Mae'r rhagofyniad yn cael ei greu yn y sgript PlayerMovement. Os yw'r chwaraewr yn is na gwerth penodol ar echel, arddangosir Game Over.
Yn y sgript PlayerMovement ychwanegwch hwn at FixedUpdate:
os (rb.position.y <-1f)
{
FindObjectOfType () .Endgame ();
}
Yna mae sgript PlayerMovement yn edrych fel hyn:
Dim ond unwaith y dylid arddangos Game Over.
I wneud hyn, gwneir newid yn y GameManager:
bool gameHasEnded = ffug;
O dan wagle cyhoeddus daw:
os (gameHasEnded == ffug)
{
gameHasEnded = gwir;
Debug.Log ("Gêm Dros");
}
Dim ond unwaith y daw hyn i ben y gêm:
Yn olaf dylid ailgychwyn y gêm:
Mewnosodir hwn yn y GameManager:
Mae angen Ailgychwyn () gwag fel swyddogaeth ar wahân.
O dan Debug.Log rydych chi'n ychwanegu:
Ail-ddechrau ();
Swyddogaeth arall rydych chi'n ei mewnosod o dan ddefnyddio UnityEngine yw:
defnyddio UnityEngine.SceneManagement;
Defnyddir hwn ar gyfer golygfeydd eraill neu ar gyfer ailgychwyn yr olygfa.
Nawr rydych chi'n ychwanegu'r cromfachau cyrliog o dan Ailgychwyn gwagle:
SceneManager.LoadScene (SceneManager.GetActiveScene (). Enw);
Mae hyn yn golygu eich bod yn ail-lwytho'r olygfa weithredol gan y Rheolwr Golygfa.
Mae .name yn sefyll am enw cyfredol eich golygfa.
Mae ailgychwyn y gêm yn digwydd yn gyflym iawn ar hyn o bryd.
Dyna pam rydyn ni'n agor Goleuadau mewn Undod. Os byddwch chi'n newid rhywbeth yn eich gêm, mae'n gwneud synnwyr ailgyfrifo'r effeithiau goleuo. Dewiswch Adeiladu Goleuadau.
Nawr rydych chi'n defnyddio paramedrau newydd:
Amnewid Ailgychwyn gyda Invoke (“Ailgychwyn”) yn sgript GameManager. Ar ôl hynny rydych chi'n rhoi'r amser a ddylai fynd heibio cyn i'r swyddogaeth "Ailgychwyn" gael ei galw.
Invoke (“Ailgychwyn”, 2f);
Mae'r oedi bellach yn newidyn.
O dan bool ychwanegwch:
arnofio cyhoeddus restartDelay = 1f;
Yn lle'r 2f isod, rydych chi nawr yn gosod y newidyn.
Mae'r sgript orffenedig yn edrych fel hyn:
Postiwyd yn wreiddiol 2020-06-08 18:56:00.