最近在寫一個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.