最近接觸Unity中UGUI的知識比較多,遇到的東西,就慢慢積累下來吧。用到就不用去網上找了。
1.Unity加載Sprite圖片資源。在Unity中,我們可能會遇到,一張圖片中,有多個UI,這時候導入到Unity中以后,需要對圖片進行分割。如圖。
切割完成的圖片,我們是可以拖入到Image中的,但是有時候我們需要通過資源加載的方式進行圖片的切換,這時候就能直接上代碼了。
1 using UnityEngine; 2 using System.Collections; 3 using UnityEngine.UI; 4 using System.Collections.Generic; 5 /// <summary> 6 /// 加載sprite圖片到指定的image 7 /// </summary> 8 public class LoadSprite : MonoBehaviour { 9 10 public Image img; 11 [ContextMenu("LoadImage")] 12 void LoadImage() 13 { 14 Object[] objs = Resources.LoadAll("SomeTexture"); 15 Dictionary<string, Sprite> dict = new Dictionary<string, Sprite>(); 16 foreach(var obj in objs) 17 { 18 Sprite sprite = obj as Sprite; 19 if (sprite != null) dict.Add(sprite.name, sprite); 20 } 21 img.sprite = dict["a1_7"]; 22 img.SetNativeSize(); 23 } 24 }
運行結果可以看下圖。
這樣就能成功的加載圖片,當然我們可以對這個image進行任何的操作。
2.Unity中的屏幕自適應。從前的我無知的認為,Unity的自適應用的非常的熟練,以為隨便調一調畫布的選項就能完美的適應了,但是最近的一個項目,做到自適應的時候總是不稱手。直到后來主程大哥點撥了我一下,這才毛瑟頓開。
Unity中的屏幕自適應,確實得調畫布的值,但是之后還需要進行一些操作,才能做到適配。下面分步說吧。
調畫布。
畫布的設置中,RenderMode:首先就是Overlay,即顯示在所有的layer之前。這時我們有一個需求,需要讓模型在畫布和攝像機之間出現,這樣我們就需要選Camera選項,然后把渲染的攝像機,掛在上邊,然后把模型擺放到畫布和該攝像機之間就Ok了。
還有一個選項就是,即世界空間中的坐標。做VR的應該經常用到。
我們大多數情況用overlay實現就行了。接下來需要設置Canvas Scaler,第一個選項就按圖中設置,然后關鍵就來了,ScreenMatchMode,我們在這里選MatchHW。然后配合下邊的那個float值(橫版游戲以高度縮放,豎版游戲按寬度縮放)。
畫布的設置就是這樣。
除此之外,我們就需要對場景畫布下的UI進行錨點的設置。然后選擇如下紅色部分所指的部分,按住Alt+鼠標左鍵,可以快捷適應。設置好這些東西,一些基本的屏幕自適應就做完了。
3.利用Unity的消息機制,實現各種UI的變化。先說說我之前是什么狀態的,以前比較喜歡用代碼控制UI,需要聲明UI的變量,然后掛載上,最后為一些Button注冊監聽。
但是有時這是沒有必要的。這些代碼本來就是多余的,我們可以不用一行代碼實現這些UI的所有功能。
其實就是對OnClick掛載Unity自帶的一些API,比較簡單,比較民工。哈哈-_-
在某些時候,這種方式,真的特別方便。
最近比較忙,跟不上更新,今后還是要堅持下去,經常總結自己學到的東西,記錄自己的學習歷程。希望對大家能有所幫助。
文章列表