14. diel - Unity (C #) Android: Štart, Skóre, PlayerPrefs
V minulej lekcii, Unity (C #) Android: Prestavba, nová grafika, vrstvy , som sa zaoberal ďalšími resty, konkrétne novými kolíziami a pridaním novej grafiky. V dnešnom dieli uvidíte, ako hráča na začiatku zastaviť tak, aby vyčkával na váš pokyn na začiatku hry. Ďalšie a oveľa podstatnejšie časťou je, ako si urobiť počítadlo skóre, zobraziť si skóre a dokonca ako si ho na konci hry uložiť.
Video
Úprava Player Move Script
Do tohto skriptu pribudlo čakania na začiatok hry
using UnityEngine; using System.Collections; public class PlayerMoveScript : MonoBehaviour { float flapAmount = 10; public float speed = 150; bool android; bool started = false; // Use this for initialization void Start() { if (Application.platform == RuntimePlatform.Android) android = true; else android = false; } // Update is called once per frame void Update () { if (!started) { if (!android) { if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { StartGame(); } } else { if (Input.touches.Length > 0) { StartGame(); } } return; } if(Input.GetKeyDown(KeyCode.Escape)) { Application.LoadLevel(0); } Vector3 vel = rigidbody2D.velocity; if (!android) { if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) { vel = Flap(vel); } } else { if (Input.touches.Length > 0) { vel = Flap(vel); } } vel.x = speed * Time.deltaTime; rigidbody2D.velocity = vel; } void StartGame() { started = true; rigidbody2D.gravityScale = 2.5f; Vector3 vel = rigidbody2D.velocity; vel = Flap(vel); rigidbody2D.velocity = vel; } Vector3 Flap(Vector3 v) { v.y = flapAmount; return v; } }
Highscore script
using UnityEngine; using System.Collections; public class HighScoreScript : MonoBehaviour { // Use this for initialization void Start () { int highscore = PlayerPrefs.GetInt("highscore", 0); guiText.text = "Highscore: " + highscore; } }
Scorer script
Skript, ktorý vlastní každý Collider, ktorý by mal pridávať skóre
using UnityEngine; using System.Collections; public class ScorerScript : MonoBehaviour { void OnTriggerEnter2D(Collider2D col) { if(col.CompareTag("Player")) { print("Adding score"); ScoreScript.AddScore(); } } }
Score script
Skript, ktorý je priradený objektu, ktorý má guiText element, ktorý nám vypisuje aktuálne skóre
using UnityEngine; using System.Collections; public class ScoreScript : MonoBehaviour { static int score = 0; static bool changed = false; // Use this for initialization void Start () { score = 0; } // Update is called once per frame void Update () { if(changed) { changed = false; guiText.text = "Score: " + score; } } void OnDestroy() { int highscore = PlayerPrefs.GetInt("highscore", 0); if(score > highscore) PlayerPrefs.SetInt("highscore", score); } public static void AddScore() { score++; changed = true; } }
Ako hra vyzerá teraz?
Problémy?
Ak máte nejaké otázky, neváhajte sa opýtať v komentároch, alebo mi napísať do správ.
V budúcej lekcii, Unity (C #) Android: Oprava sekanie, nakláňanie , sa budeme venovať nakláňaniu hráča pri padaní a vyriešime jeho sekavost.