學習筆記-Unity3d代碼實現Windows10加載圈圈的效果

最近在寫一個Unity3d的模仿windows10的桌面的程序,因爲Unity3d自己不支持Gif圖片,因此突發奇想使用代碼來實現接近的。windows

接下來是代碼部分:不一一解析,很簡單,看的懂原理就Okly了。ide

 

 1 using System.Collections;  2 using System.Collections.Generic;  3 using UnityEngine;  4 using UnityEngine.UI;  5 public class LoadImg : MonoBehaviour {  6     public GameObject[] gms;  7     Dictionary<int, float> speed = new Dictionary<int, float>();  8    public float s=90;  9     // Use this for initialization
10     void Awake() 11  { 12         hide = false; 13 
14         for (int i = 0; i < gms.Length; i++) 15  { 16             gms[i].transform.localEulerAngles = Vector3.back * i * 23.3f; 17  speed.Add(i, s); 18  } 19  StartCoroutine(RUN()); 20        
21  } 22     private void Rest() 23  { 24         if (hide) 25  { 26             for (int i = 0; i < gms.Length; i++) 27  { 28                 gms[i].transform.eulerAngles = Vector3.back * i * 23.3f; 29  } 30  } 31  StartCoroutine(RUN()); 32  } 33     // Update is called once per frame
34     void FixedUpdate () { 35         for(int i = 0; i < gms.Length; i++) 36  { 37            gms[i].transform.Rotate(Vector3.back  * Time.deltaTime*speed[i]); 38  } 39  } 40     bool hide = false; 41  IEnumerator RUN() 42  { 43 
44         for (int i = gms.Length-1; i >=0; i--) 45  { 46           
47             if (hide) 48  { 49  StartCoroutine(SETSpeed(i)); 50                 yield return new WaitForSeconds(0.123f); 51                 gms[i].SetActive(true); 52 
53  } 54             else
55  { 56  StartCoroutine(SETSpeed(i)); 57                 yield return new WaitForSeconds(0.123f); 58                 gms[i].SetActive(false); 59  } 60 
61  } 62         if (hide) 63  { 64             yield return new WaitForSeconds(2.23f); 65  } 66         else
67  { 68             yield return new WaitForSeconds(1.23f); 69 
70 
71  } 72             hide = !hide; 73  Rest(); 74            
75      
76 
77  } 78     IEnumerator SETSpeed(int i) 79  { 80         speed[i] = 2.23f * s; 81         yield return new WaitForSeconds(1.23f*0.23f*1.23f); 82         speed[i] = s; 83  } 84 
85 }

 

而後咱們建立一箇中心偏移的UI,Texture就像這樣的:this

關於中心偏移:spa

父對象爲的y爲0,這個是一個空物體。3d

子對象LS是一個Image/RawImage,y向上偏移了123個單位長度,而後咱們就能夠旋轉父對象就能夠看到子對象在作圓周運動了!code

代碼綁定:orm

複製12個上面作的對象放到一個空物體裏,重命名複製的對象(這個能夠不要不過我強迫症),而後拖到Gms裏面(size這個是值個數,12個就寫12就會出現12個空,保證每一個都單一綁定),S表明的是旋轉速度單位(角度/s)對象

最後保存一下,運行...效果如圖:blog

固然實際效果沒有那麼生硬。圖片

最後編輯時間 2018/6/27 5:59.

相關文章
相關標籤/搜索