Unity/Animation -- 添加動(dòng)畫事件(Animation Events)

前言

動(dòng)畫事件(Animation Events)是一種附屬于Animation Clips 的事件瞭吃,它們在動(dòng)畫發(fā)展到一定程度時(shí)觸發(fā)受楼,從而實(shí)現(xiàn)一些特殊的功能鼎文。熟悉怎么添加動(dòng)畫事件可以省去很多不必要的麻煩,而且它確實(shí)非常簡單汽纠。

概念

事件(Event):事件是一種條件式的函數(shù)抬驴,當(dāng)滿足某些條件時(shí)才會(huì)被調(diào)用炼七。最簡單的例子就是鼠標(biāo)點(diǎn)擊事件,鍵盤按下時(shí)間等布持,這些事件在寫GUI的時(shí)候經(jīng)常會(huì)用到豌拙。我們需要做的只是把事件函數(shù)綁定到監(jiān)聽器(Listener)上,然后等到條件滿足的時(shí)候题暖,監(jiān)聽器就會(huì)代替我們執(zhí)行按傅。?

動(dòng)畫事件(Animation Event):動(dòng)畫事件就是時(shí)間的一種,它的觸發(fā)條件是動(dòng)畫播放到指定的幀胧卤。我們只需要編寫事件函數(shù)唯绍,選擇一個(gè)具體的Animation的具體幀作為觸發(fā)點(diǎn),每次動(dòng)畫播放到指定的幀時(shí)灌侣,便會(huì)調(diào)用一次動(dòng)畫事件推捐。

在Unity中,我們需要關(guān)心的只是動(dòng)畫事件的內(nèi)容(編寫腳本)以及選擇合適的時(shí)間(在Animation視圖中進(jìn)行)侧啼,其他的都不需要我們管牛柒,可以說是非常智能了。接下來就簡單地寫一個(gè)Unity腳本痊乾,并把它綁定到一個(gè)Animation上皮壁。

步驟

第一步依然是選擇一個(gè)游戲物體作為動(dòng)畫的載體,我們按照慣例直接創(chuàng)建Cube作為游戲?qū)ο蟆?/p>

第二步我們需要編寫一個(gè)專門存放動(dòng)畫事件的腳本哪审。直接在Project視圖中鼠標(biāo)右鍵單擊?Create - C# Script蛾魄,將腳本命名為AnimEvents.cs,然后修改它的內(nèi)容為


這個(gè)腳本定義了一個(gè)showMsg函數(shù)湿滓,它負(fù)責(zé)把接受到的msg字符串打印到Console上滴须。修改完成后我們只需把腳本拖拽到Hierarchy的Cube對(duì)象上,就可以把腳本作為Cube的組件叽奥。

第三步則需要?jiǎng)?chuàng)建一個(gè)新的Animation Clip扔水。如果不知道如何創(chuàng)建Animaiton Clip,可以參照我之前的博文創(chuàng)建Animation Clip朝氓。創(chuàng)建完成后我們應(yīng)該在Animation窗口看到類似的圖像魔市。?

第四步便要選擇一個(gè)具體的動(dòng)畫幀作為事件的觸發(fā)時(shí)間主届。首先移動(dòng)紅線到理想的采樣幀,這里選擇的是0:30待德;接著點(diǎn)擊左側(cè)屬性列表右上角的添加事件按鈕君丁,就會(huì)在紅色所在的位置添加一個(gè)Animation Events。添加成功后可以在時(shí)間軸的下面看到一個(gè)標(biāo)記将宪,提示我們動(dòng)畫事件已經(jīng)成功添加绘闷。

這時(shí)我們點(diǎn)擊事件標(biāo)記就可以在觀察窗口(Inspector)中查看到可供選擇的函數(shù)。因?yàn)槲覀冎耙呀?jīng)在Cube上添加了一個(gè)AnimEvents腳本涧偷,所以AnimEvents中的函數(shù)可以作為動(dòng)畫事件函數(shù)被調(diào)用簸喂。

注意?并不是所有的函數(shù)都可以被當(dāng)做動(dòng)畫事件函數(shù)的,可以被調(diào)用的動(dòng)畫事件函數(shù)必須滿足以下規(guī)則:?

1. 最多只能接受一個(gè)參數(shù)?

2. 參數(shù)的類型必須是Int, Float,String, Object中的一種

我們選擇showMsg作為Animation Event的函數(shù)燎潮,然后就會(huì)發(fā)現(xiàn)多出了一個(gè)Parameters String喻鳄,這是因?yàn)槲覀冎岸x的showMsg函數(shù)接受一個(gè)string作為參數(shù),所以我們在Inspector窗口輸入的值會(huì)作為參數(shù)被函數(shù)處理确封。你可以輸入“Hello World”除呵,然后運(yùn)行游戲,我們可以發(fā)現(xiàn)每當(dāng)動(dòng)畫進(jìn)行到一半時(shí)爪喘,Console上都會(huì)輸出“Hello World”颜曾,和我們預(yù)想的結(jié)果一致。?

另一種視角?

如果你在Project視圖中找到我們使用的Animation并在Animation視圖中打開它秉剑,你會(huì)驚奇地發(fā)現(xiàn)之前的Animation Events換了一種格式泛豪。這是因?yàn)橹拔覀兪窃诰唧w的游戲物體上操作,以游戲物體作為對(duì)象侦鹏,游戲物體上所有腳本中的函數(shù)都會(huì)被考慮進(jìn)來诡曙。而直接在Project視圖中打開則是以Animation為對(duì)象,這樣我們就會(huì)看到之前選擇的函數(shù)被Animation自動(dòng)處理為了一個(gè)函數(shù)名和參數(shù)列表固定的函數(shù)原型(prototype)略水,這樣我們就算把這個(gè)Animation添加到其他游戲物體上价卤,只要其他的游戲物體存在與該函數(shù)原型類似的函數(shù)就可以成功調(diào)用。這么看渊涝,Unity確實(shí)是十分智能慎璧。?

總結(jié)

這次文章比較短=_=懶得總結(jié)了~~~~希望你早日學(xué)會(huì)使用Animation Events

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市跨释,隨后出現(xiàn)的幾起案子胸私,更是在濱河造成了極大的恐慌,老刑警劉巖鳖谈,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岁疼,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚯姆,警方通過查閱死者的電腦和手機(jī)五续,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來龄恋,“玉大人疙驾,你說我怎么就攤上這事」希” “怎么了它碎?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長显押。 經(jīng)常有香客問我扳肛,道長,這世上最難降的妖魔是什么乘碑? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任挖息,我火速辦了婚禮,結(jié)果婚禮上兽肤,老公的妹妹穿的比我還像新娘套腹。我一直安慰自己,他們只是感情好资铡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布电禀。 她就那樣靜靜地躺著,像睡著了一般笤休。 火紅的嫁衣襯著肌膚如雪尖飞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天店雅,我揣著相機(jī)與錄音政基,去河邊找鬼。 笑死底洗,一個(gè)胖子當(dāng)著我的面吹牛腋么,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亥揖,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼珊擂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了费变?” 一聲冷哼從身側(cè)響起摧扇,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挚歧,沒想到半個(gè)月后扛稽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滑负,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年在张,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了用含。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮匾,死狀恐怖啄骇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘟斜,我是刑警寧澤缸夹,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站螺句,受9級(jí)特大地震影響虽惭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛇尚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一芽唇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佣蓉,春花似錦披摄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至虾标,卻和暖如春寓盗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背璧函。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工傀蚌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蘸吓。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓善炫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親库继。 傳聞我的和親對(duì)象是個(gè)殘疾皇子箩艺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容