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


學習unity1年多了,工作也1年了,因為工作需要,有幾個月沒接觸unity Ngui啦。

學的還是不踏實。繼續努力吧。由於下周就要進行新游戲的開發,這幾天熟悉熟悉NGUI,今天按照現在公司以前的項目做了個loading界面。

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

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

下面是我需要顯示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里面的,控制一下每隔多少秒執行啊啊,不會啊,以前見過有大神寫過,忘記了。哪位大神要是知道教教我吧。

后來花花說用這個方法 InvokeRepeating,查了APi

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

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

另外,如果用協程 http://docs.unity3d.com/ScriptReference/Coroutine.html 調用的方法可以是 RandomTips,遞歸調用,實現每隔m秒執行某種行為等。

以上就是實現提示文字的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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM