###### tags: `Unity UI` [toc] # Unity Button # Button ## 建立Button  ## Button 屬性 Button預設以下幾種狀態讓開發者自行變化 | Trigger Name | 說明| | ------------------- | -------- | | Normal Trigger | 一般狀態| |Highlighted Trigger |滑鼠在Button上時| |Pressed Trigger |按住Button時| |Selected Trigger || |Disabled Trigger ||  能變化的種類分成三種: | 變化 | 說明 | | ------------------- | -------- | | Color Tint |顏色上的變化| | Sprite Swap |圖片上的變化(可以更換圖片等等)| | Animation |可以製作動畫| ### 以下用Animation來示範  1. 點 Auto Generate Animation,讓 Unity 自動幫你建好Normal 、Highlighted、Pressed 、Selected、Disabled 這五種 Animation Clip 2. Animation controller 找地方存起來即可 3. 選取 Button 後到 Windows/Animation/Animation  4. 選取想要變化的狀態,本範例使用 highlighted 來做動畫  就可以為 highlighted 做出想要的動畫~  ## BUTTON event : on_click() 在寫程式的時候既然寫到 Button,那有很高的機率就是為了點 Button 吧? 最棒的是 Unity 已經幫 Button 加好了 Event ,只要把會影響到的物件放到欄位裡,在選擇要用什麼 function 處理就行了~ 已下範例我將在點了 button 後讓 button 消失。  由於我點下 button 後會影響到 button 自己(把自己關掉),因此我把 Hierachy 的 button 拖到欄位裡面  接著選擇要怎麼處置它。 一般而言用程式碼來將物件關閉時都會這樣寫 ```csharp= GameObject_name.SetActive(false); ``` 而我們直接用 unity 幫我們建好的 event 也是異曲同工之妙  沒有勾代表 false  接著來看看效果  ## 幫Button加點音效 不知道有沒有人跟一開始的我一樣有疑惑,如果 event 只有on_click(),我要怎麼去幫 Button 加其他的效果?例如:鼠標放在button 上時 (highlighted) 就撥放音效。 喔...好啦!! 其實 unity 還有很多 event 可以使用,我們只要新增 eventTrigger,就可以選擇要新增哪個 event 來用喔! 本範例的 event 選擇 onPointerEnter() ,也就是處理鼠標滑進 button 時的狀況。  如果要撥放音效,那物件就一定要掛上 Audio source 才行~ 所以我在 button 裡新增一個 Audio source component,並把想要的音效放上去。 [範例使用的音效的出處](https://assetstore.unity.com/packages/audio/sound-fx/ui-sound-effects-collection-pack-2-buttons-27803)   把 audio source 掛好,且把音效素材放上後,下一步就是在適當的時機播放音效,本範例希望能在鼠標移入 button 上就播放音效。要播放音效,一般在程式碼的時候我們都會打 ```csharp= public AudioSource audio; audio.play(); ``` 幸運的是我們擁有好用的 eventTrigger,讓我們直接新增需要的event,並選擇 AudioSource 後在選擇 play(),就可以播放了! 1. 先新增  2. 把掛著 audio source 的物件抓進來。**因為要播放音效,所以一定要抓有掛 audio source 的物件。**  3. 最後選擇要用什麼function來處理  **一定要記得先把audio source的 play on awake()先關閉,否則遊戲一執行,音效就會播出,這不是我們想要ㄉ**  **成果如下**:point_down: 至於為什麼會音效不停播放,是因為 button 左右擺動的時候讓鼠標一直重新碰到 button,讓音效重複播放,下次在製作動畫的時候小心點就能避免這個問題。 {%youtube HSwkl6jP6E4 %}
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.