1. 程式人生 > >關於Unity中RawImage和Button

關於Unity中RawImage和Button

clam 屬性 尋址 lam etc 1.2 public 遊戲場景 像素

1.貼圖的Texture Type屬性值

Texture:會把貼圖的大小轉換為最相近的2的n次方,比如400X1369會轉換為512X1024。

Sprite 2D:是貼圖的原始大小。

2.創建一個RawImage類型的UI節點,貼圖屬性是Texture,與Image是不一樣的,Image是Sprite2D類型的。

RawImage比Image多一個Raw Image組件,裏面的UV rect屬性是比較特殊的。

UV rect的x,y的意思就是從貼圖的哪個地方開始顯示在Canvas中的。以左下角為(0,0),右上角為(1,1)。

如果是x,y是(0,0.5),表示從貼圖的中部(0,0.5)的坐標開始往上和往右顯示,超出的部分有兩種模式來填補,受貼圖的Wrap Mode屬性影響,Clamp表示用最後的像素填充,另一種是Repeat表示從頭開始貼,Sprite類型的只能Clamp。

UV rect的w,h的意思就是顯示在Canvas中的大小,以左下角為(0,0),右上角為(1,1),如果是w,h是(0.5,0.5),表示在Canvas中顯示原來貼圖的四分之一。

Image有Image的優勢,Image可以九宮格拉伸。

RawImage有RawImage的優勢,RawImage可以UV rect貼圖的紋理尋址。

應用:飛行類遊戲場景的滾動效果

1.創建一個叫做sky的RawImage的UI節點。

2.把Texture類型的貼紙拖進sky節點的RawImage組件的Teture屬性中。貼圖必須是Texture類型的,不能是Sprite2D,Sprite2D會有空白。

2.設置sky節點的Scale,x和y都設置為1.25,覆蓋好Canvas。只有x,y相同才能不變形。

3.創建一個叫sky的腳本,掛載到sky節點下。

4.sky腳本代碼

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class sky : MonoBehaviour {
    RawImage img;
    float speed = 0.1f;
    // Use this for initialization
    void Start () {
        this.img = this
.GetComponent<RawImage>(); } // Update is called once per frame void Update () { float s = this.speed * Time.deltaTime; Rect r = this.img.uvRect; r.y += s; this.img.uvRect = r; } }

5.可以實現地圖的滾動

創建完一個Canvas後需要做的事情

1.把Canvas節點的Canvas組件的Render Mode改為Screen Space-Overlay

2.把Canvas節點的Canvas Scaler組件的UI Scale Mode改為Scale With Screen Size

3.把Canvas節點的Canvas Scaler組件的Reference Resolution改為640X960

4.把Canvas節點的Canvas Scaler組件的Match拉到Width那一邊

5.把Canvas節點的Canvas Scaler組件的Reference Pixels Per改為100

註意:Canvas節點的Canvas組件的Render Mode為Screen Space-Overlay時是繪制不出帶材質球的UI節點,必須換成Screen Space-Camera,並且把Main Camera拉到Canvas節點的Canvas組件的Render Camera屬性中才會顯示。

關於Unity中RawImage和Button