Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

10. díl - Unity (C#) Android: Start, Skóre, PlayerPrefs

C# .NET Unity 3D Unity (C#) Android: Start, Skóre, PlayerPrefs

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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ď?

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.


 

 

Článek pro vás napsal vratislavino
Avatar
Jak se ti líbí článek?
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 (3)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!