1_Unity學習筆記,就讓我們先來說說MonoBehaviour吧!

是的,我這邊並不會告訴各位怎麼安裝Unity請自己上網爬文,這裡從C#開始出發告訴各位如何使用Unity。 請把在下我當作業餘的來看看吧,這裡只會記下我的經驗。 Awake() Start() Update() FixedUpdate() LateUpdate() 通常會看到以上這種東東,來來來來,這是甚麼呢? 關於流程圖的部分就請各位自由爬文,在下可以算是個懶人哈哈! 總之在這邊稍微介紹一下,一般來說看起來會像是:  Awake()     ↓    Start()     ↓ FixedUpdate()←←     ↓      ↑  Update()   ↑     ↓      ↑  LateUpdate()→→↑ 的流程,每個場景開始,會先執行每個物件身上的Awake(),接著執行每個物件身上的Start() 都執行完後將會迴圈所有物件依照如上圖的順序。 FixedUpdate最重要的是他每次間隔都是絕對的,在Edit > Project Settings > Time 可以找到 Update則是針對每一禎都會執行,因為禎數會隨著遊戲效能而有所不同,因此Update的間隔都不一定,可以利用Time.deltaTime取得每一禎的時候再秒數的比例。 LateUpdate就跟Update一樣,不過會觸發在Update後面。 另外介紹一些我個人比較常用到的: OnApplicationFocus 當遊戲被縮小或失去焦點的時候會觸發 OnApplicationPause 當遊戲被暫停的時候,電話來了之類的 OnApplicationQuit 當玩家離開遊戲前會先觸發此才關閉程式 OnCollisionEnter 當碰撞到的時候 OnCollisionEnter2D 同上,2D時使用,忽略Z軸 OnCollisionExit 當碰撞體離開時 OnCollisionExit2D 同上,2D時使用,忽略Z軸 OnCollisionStay 當碰...

2_Unity學習筆記,想到什麼寫什麼的Unity學習之路

在知道一些些基礎的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

留言

這個網誌中的熱門文章

Unity儲存以及讀取

EditorGUILayout學習筆記

1_Unity學習筆記,就讓我們先來說說MonoBehaviour吧!