文章出處

最近接觸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,比較簡單,比較民工。哈哈-_-

在某些時候,這種方式,真的特別方便。

 

最近比較忙,跟不上更新,今后還是要堅持下去,經常總結自己學到的東西,記錄自己的學習歷程。希望對大家能有所幫助。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()