學習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.