在知道一些些基礎的MonoBehaviour後,我們來正式學習一下怎麼控制物件吧!
【物件的組件】
每個物件身上都有很多個組件,每個組件都是使得物件呈現最後結果的重要一員。
this.gameObject.AddComponent<Collider>(); //加入組件
this.gameObject.GetComponent<Collider>(); //取得組件
加入只要是Unity的組件都可以使用,如果是要加入Image之類的屬性的話記得using UnityEngine.UI噢。
【物件開關】
this.gameObject.SetActive(true);
true為開啟,false為關閉
檢查物件是否開啟
this.gameObject.activeInHierarchy; //在當前場景中是否開啟,父物件關閉則關閉
this.gameObject.activeSelf; //檢查自已是否有開啟,不理會父物件
【物件移動】
物件的位置屬性Transform:
移動基本上就靠他,我一般使用:
this.transform.localPosition = new Vector3(0,0,0);
這種方式移動物件,如果是世界位置的話則是:
this.transform.position = new Vector3(0,0,0);
差別是有沒有參考父物件的位置資訊。
另外也有相對的移動方法(以上都是絕對位置):
this.transform.Translate(Vector3.zero);
之類的。
【物件縮放】
如上也是使用Transform:
this.transform.localScale = Vector3.one;
另外是還有可以查看於全域的縮放值:
this.transform.lossyScale;
【物件旋轉】
如上也是使用Transform:
在這裡不多贅述,因為在下也不是很懂,反正你只要知道,
this.transform.localEulerAngles = Vector3.zero;
可以旋轉就對了。
另外也有:
this.transform.Rotate(Vector3.zero);
【物件顏色】
物件顏色如果是3D則基本上使用Renderer就可以取得:
this.GetComponent<Renderer>().material.color = new Color(r,g,b,a);
如果是UI則是使用Image居多:
this.GetComponent<Image>().color = new Color(r,g,b,a);
『 UI系列 』
【Canvas】

這裡我就盡量介紹關於畫布的能力:
畫布有三種模式可以選擇:
Overlay,Camera,World Space,
Overlay會直接蓋掉畫面其他東西,因為是UI介面嘛!一定會渲染在畫面上。
Camera是會直接蓋在攝影機的位置,畫布會隨著攝影機大小改變。
World Space就是世界位置,偏絕對位置,通常3DUI都是使用這種。
其下方還有一個組件是Canvas Scaler,如果選擇Scale Mode是基於長寬的話,可以設定到基礎寬高後,如果畫面大小比例有所不同,會依照你設定的錨點等去做畫面的調整。
最下面是捕捉點擊事件的組件。
【RectTransform】
是屬於UI特有的Transform,其功能頗為強大:
一般的位置x,y,z以及與一般Transform不同的size,Width、Height。
還有錨點Anchors就是影響畫面調整後的呈現方式之一,
還有重心Pivot也是影響畫面調整後呈現方式之一。
錨點簡單一點說就是決定此物件在UI介面中站多大的位置,
重心簡單一點就是指當畫布大小改變時,其對其的點在哪個位置。
【Image】
如果要貼上一般圖片的話可以加入此組件,直接將圖拖曳至Sprite就可以使用,如果要取得原圖的大小,只要按下旁邊的Set Native Size就可以了,另外也可以使用Material材質球,不過只能使用UI中的材質球或是自己寫Shader,以後有機會再向各位介紹。
還有Raycast Target就是指定是否會按到此物件,如果不勾選則會直接忽略此物件。

【Sprite】
在Unity中,所有的圖片都會被轉成Sprite精靈圖,可以設定一些參數使得使用上更加方便。
Texture Type設定精靈圖的類型。
Sprite Mode 指定此精靈圖含有多少物件(單個,多個)
~~~~~~~其他省略~~~~~~~~~
其下還有一個個平台的壓縮程度,可以選擇壓縮大小,一般在下選擇壓縮512,如果文字多需要看清楚則會壓到1024而已。
【RawImage】
特殊的圖片貼圖,一般來說Unity內都是使用Sprite貼圖,有時候也能使用Texture來貼圖,例如Render Texture之類的時候非常方便。
【Panel】
簡單來說就是一個個的面板,毫無反應就是面板。
【Text】
文字組件:
Text內輸入文字
Font字形
RichText指定是否使用一些類似HTML的標籤例:
<color=#00ffffff>text</color>
Horizontal Overflow是指定橫向超出的動作
Vertical Overflow是指定縱向超出的動作
BestFit就是指定是否要依照文字框自適應文字大小,可設定規定最大值及最小值
可指定文字顏色及材質球及是否能夠按此物件
【Button】
按鈕,UI的靈魂人物,基本上搞懂了就不難。
Interactable 互動。
Transition變換模式,當玩家滑入或是按下時的顏色指定,也能夠指定貼圖等。
OnClick()最重要的功能,指定此按鈕按下後的動作。可以指定物件或是Script都可以。
此就是按下按鈕後使Panel物件開關的指定方式。
【ScrollView】
可滑動區域,常常選單甚麼的超出可視範圍,這時候可滑動區域就是非常好用啦!

分成三個部分:
Viewport是可視範圍,就是此UI滑動會基於讓玩家可以看到的狀況。
Scrollbar Horizontal橫向卷軸
Scrollbar Vertical縱向卷軸
把想要被滑動的物件加入Content底下就可以了。
另外其屬性:
Content指定可滑動的內容區域
Horizontal設定是否可橫向滑動
Vertical設定是否可縱向滑動
Movement Type是限制移動的模式,
Unrestricted完全不限制
Elastic限制,可設定Elasticity限制強度
Clamped完全限制。
Viewport是指定視埠的物件
Horizontal Scrollbar設定橫向卷軸物件
Vertical Scrollbar設定縱向卷軸物件
【隨機】
Unity中有專屬的隨機,使用就是:
Random.Range(A,B);
有兩種,可以隨機Int也可以隨機Float,唯一要注意的就是隨機數會包含A不包含B。
Mathf是Unity內專用的Math的物件
Mathf.Sign(value) ,當value>=0則會返回 1,否則返回-1
留言
張貼留言