遊戲Loading中的小提示和Loading動畫實現

學習unity1年多了,工做也1年了,由於工做須要,有幾個月沒接觸unity Ngui啦。html

學的仍是不踏實。繼續努力吧。因爲下週就要進行新遊戲的開發,這幾天熟悉熟悉NGUI,今天按照如今公司之前的項目作了個loading界面。app

    內容就是一張背景圖,上面會有幾個精靈一閃一閃的跳動的顯示加載的界面,下面會隨機出現小提示文字。需求很簡單。可是作了這個簡單的功能練習,我仍是學會了一點兒基礎。dom

    先說提示文字隨機顯示吧。
學習

下面是我須要顯示label文字的腳本LoadingTips.cs動畫

using UnityEngine;
using System.Collections;
 
public class LoadingTips : MonoBehaviour {
    string[] tips = new string[] { "小常識:作任務能夠得到更多得經驗噢!", "天天登錄有獎勵哦!","能夠和好友一塊兒玩,看看誰的分數更高!","happay everyday!!"};
    GameObject tip;
    void Start () {
        tip = transform.gameObject;
        //StartCoroutine("RandomTips");
        InvokeRepeating("RandomText", 2, 3.0F);
    }
    void RandomText()
    {
        for (int i = 0; i < tips.Length + 1; i++)
        {
            tip.GetComponent<UILabel>().text = tips[Random.Range(0, i)];
        }
    }
    IEnumerator  RandomTips()
    {
        for (int i = 0; i < tips.Length + 1; i++)
        {
            Debug.Log(Random.Range(0, i));
            tip.GetComponent<UILabel>().text = tips[Random.Range(0, i)];
        }
        yield return new WaitForSeconds(4f);
        StartCoroutine("RandomTips");
    }
 
}

  

這裏遇到個問題就是 每隔多少秒顯示(刷新)文字的實現。開始想寫在Update方法裏,但是Update每一幀都執行。我記得能夠寫在Update裏面的,控制一下每隔多少秒執行啊啊,不會啊,之前見過有大神寫過,忘記了。哪位大神要是知道教教我吧。ui

後來花花說用這個方法 InvokeRepeating,查了APi3d

http://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.htmlorm

void InvokeRepeating(string methodName, float time, float repeatRate);這是用法。methodName傳的是方法名,開始我傳的是RandomTips,不能實現。後來單獨寫了個顯示文字的方法 傳的RandomText能夠實現。協程

另外,若是用協程 http://docs.unity3d.com/ScriptReference/Coroutine.html 調用的方法能夠是 RandomTips,遞歸調用,實現每隔m秒執行某種行爲等。htm

以上就是實現提示文字的Script,很簡單有沒有。

 

而後是一跳一跳的加載進度的實現。也是一個腳本LoadingController.cs

 

using UnityEngine;
using System.Collections;
 
public class LoadingController : MonoBehaviour {
         
    public Animator[] animators;
 
    void Start()
    {
        StartCoroutine("PlayLoading");
    }
 
    IEnumerator PlayLoading()
    {
        animators[0].enabled = true;
        animators[3].enabled = true;
        yield return  new WaitForSeconds(0.7f);
        animators[1].enabled = true;
        animators[4].enabled = true;
        yield return  new WaitForSeconds(0.7f);
        animators[2].enabled = true;
        animators[5].enabled = true;
    }
}

又是協程,協程很好用有沒有。這個動畫的實現也遇到了問題。哎,發現個人問題永遠是那麼多。

 

  

像這樣每一個item是個精靈的根節點。以前我是直接把精靈放到PanelLoading下面 可是後來發現 在精靈上加個Animator組件 跳動的位置不是我想要的位置。後來想必定在每一個讓之跳動的精靈上加個gameobject控制位置哈。

 

加動畫的時候我又遇到了個問題,就是Loading有2個,後來查了一下1叫Loading.controller  ,2叫Loading.anim

我不會作這個2, 1,2都是能夠經過在Project視圖下去建立的,先建立個Animator Controller ,在裏面增長狀態機,建立個狀態,而後把你的2賦給這個狀態的Motion。而後把你的控制器賦給你的Animator 就能按照你的動畫去運行了。

關於Animator這方面 筆者還要進一步的研究。

基本的Loading場景UI作好了!!啊啊啊,工做一年了,學了1年了unity NGUI 怎麼仍是不進步,感受好多多基礎都不會。

 

學技術不能氣餒,我要加油。努力。在之前的公司感受給我個界面我都能作。之前的是大遊戲 rpg 和卡牌類型。

如今的是小遊戲,三消類的。我看了目前公司的遊戲 ,感受很迷茫。如今還沒開始項目,下週一開始。我先惡補一下基礎。啊啊啊,這幾天除了以前的遊戲 就是看C#圖解。一半還沒看完,確實學到不少,也記了筆記。

在此,我生命的轉折點,重要時期,感謝個人好友@花花@Kotoba@葉子哥哥 ,還有不少小夥伴,真心的幫助我。我會愈來愈努力的。永不言棄!小貝是最棒的!!嘎嘎。。。。 

 以上僅此做爲個人學習筆記,記錄個人失誤 學到的,也有監督個人做用,若是在犯一樣的錯誤 ,給花花買冰棍去......

加油吧 ,我,悲慘的小貝仔,我之後是要成爲大富婆的人,不能放棄。Aspire to inspire until I expire.

相關文章
相關標籤/搜索