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

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

Tento videotutoriál navazuje na předchozí díl o programování her pro Android v Unity, kde 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, ja 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.


 

  Aktivity (1)

Článek pro vás napsal vratislavino
Avatar
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.

Jak se ti líbí článek?
Celkem (3 hlasů) :
4.666674.666674.666674.666674.66667


 



 

 

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í!