? ?學(xué)完棧和隊(duì)列雖然實(shí)現(xiàn)過(guò)自定義的隊(duì)列和棧,可是還是容易忘記,我總覺(jué)得多使用才能有深刻的記憶质蕉。
? ? ?今天做的這道題目沥割。
三連擊命辖? 于是我開(kāi)始嘗試做...
設(shè)想1:是這樣的 定義一個(gè)狀態(tài)的枚舉(釋放技能的時(shí)候判斷當(dāng)前的狀態(tài) 和是否正在播放技能動(dòng)畫(huà))
用戶點(diǎn)擊攻擊后 ->? 開(kāi)啟協(xié)成(攻擊)->根據(jù)技能的名字播放對(duì)飲的動(dòng)畫(huà) -> 等待動(dòng)畫(huà)播放完成伊脓。
public enum AttackState// 攻擊的狀態(tài)
{?normal,?attack1,attack2,attack3}
然后在update中判斷用戶的點(diǎn)擊然后根據(jù)當(dāng)前的狀態(tài)來(lái)改變運(yùn)行對(duì)應(yīng)的協(xié)程(因?yàn)橐却寄懿シ诺臅r(shí)間完成才能播放下一個(gè))
可是做完后發(fā)現(xiàn)每次攻擊要等待動(dòng)畫(huà)播放完成才能進(jìn)行下一次攻擊平酿,用戶體驗(yàn)很不好啊碗短,我如果想要用戶連續(xù)點(diǎn)擊三下(然后一個(gè)一個(gè)自動(dòng)播放技能呢)值桩,這個(gè)時(shí)候我想到了隊(duì)列,隊(duì)列先進(jìn)先出嘛豪椿。
設(shè)想2:還是定義當(dāng)前狀態(tài)的枚舉奔坟,
用戶點(diǎn)擊攻擊后 -> ?隊(duì)列里添加下一個(gè)狀態(tài)的枚舉(比如當(dāng)前狀態(tài)是閑置狀態(tài)下一個(gè)狀態(tài)就是攻擊1) ->根據(jù)隊(duì)列里是否有要播放的技能來(lái)播放技能 ->技能的名字播放對(duì)飲的動(dòng)畫(huà) -> 等待動(dòng)畫(huà)播放完成。
這里注意當(dāng)要播放的動(dòng)畫(huà)名字是第三個(gè)動(dòng)畫(huà)的時(shí)候搭盾,就讓他的狀態(tài)轉(zhuǎn)換成正常狀態(tài)咳秉、技能進(jìn)入Cd狀態(tài)(用戶不能點(diǎn)擊三次后,要等待cd時(shí)間冷卻好才能再次使用技能)
Inspector面板上填好對(duì)應(yīng)的參數(shù)(對(duì)應(yīng)技能的動(dòng)畫(huà)名字鸯隅、動(dòng)畫(huà)的長(zhǎng)度也就是時(shí)間)
這里因?yàn)閯?dòng)畫(huà)的速度比較慢我想讓他變的快一點(diǎn)(默認(rèn)是1)澜建,這樣效果比較好一點(diǎn)向挖。速度修改了對(duì)應(yīng)的動(dòng)畫(huà)長(zhǎng)度也要除以這個(gè)速度。
然后做點(diǎn)UI可以看出效果炕舵。