Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

Lekce 10 - Unity (C#) Android: Start, Skóre, PlayerPrefs

V minulé lekci, Unity (C#) Android: Přestavba, nová grafika, vrstvy, jsem se zabýval dalšími resty, konkrétně novými kolizemi a přidáním nové grafiky.

V dnešním dílu uvidíte, jak hráče na začátku zastavit tak, aby vyčkával na váš pokyn k začátku hry. Další a mnohem podstatnější částí je, jak si udělat počítadlo skóre, zobrazit si skóre a dokonce jak si ho na konci hry uložit.

Video

Úprava Player Move Scriptu

Do tohoto skriptu přibylo vyčkání na začátek 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, který vlastní každý collider, který by měl přidávat 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, který je přiřazen objektu, který má guiText element, který nám vypisuje aktuální 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;
    }
}

Jak hra vypadá teď?

Zdrojákoviště Unity - 2D hry

Problémy?

Pokud máte nějaké otázky, neváhejte se zeptat v komentářích, nebo mi napsat do zpráv.

V příští lekci, Unity (C#) Android: Oprava sekání, naklánění, se budeme věnovat naklánění hráče při padání a vyřešíme jeho sekavost.


 

Předchozí článek
Unity (C#) Android: Přestavba, nová grafika, vrstvy
Všechny články v sekci
Zdrojákoviště Unity - 2D hry
Přeskočit článek
(nedoporučujeme)
Unity (C#) Android: Oprava sekání, naklánění
Článek pro vás napsal vratislavino
Avatar
Uživatelské hodnocení:
4 hlasů
Autor se věnuje programování v C#, především pak ve vývojovém prostředí Unity3D. Má asi pětileté zkušenosti s programováním a momentálně pracuje na připravované hře Azulgar: Beyond The Frontiers.
Aktivity