用了這麼多年操作系統後發現,我們早就被科技巨頭馴化,單擊雙擊早就已經變成肌肉記憶了。
這就叫設計規範——也叫「人類調教說明書」。從這個角度看,某些科技巨頭爲「確認鍵」應該在左在右打得不可開交完全可以理解。我們也沒必要逆潮流去開發新的操作方式,去和科技巨頭去爭奪人類主宰權。
當然,如果你的應用已經擁有了一套操作方式,用戶也養成了使用習慣,並體驗良好。那麼也沒有必要去改成所謂的標準。(讀者讀至此處,應已自然而然地意識到博主在暗示紅警2和紅警3,並露出贊同的微笑)
那麼假設你的用戶用慣了windows,鄙視你現在蹩腳的操作體驗,甩你一臉需求,要你與國際接軌。你很可能就需要這麼一個東西了。。。
一直想把常用的功能做成模塊化,即插即用,不至於每個工程都要重新做。那麼從鼠標操作入手最好不過了,順便在這裏記錄一下心得,日後也當個筆記。
UE4製作一個藍圖的多功能鼠標宏(一)單擊、雙擊、取消點擊
先從熟練操作鼠標的肌肉記憶裏回憶一下,邪惡的科技巨頭是如何把我們調教成熟練使用鼠標的乖寶寶的。
既然做最基礎的東西,那我馬上從蚯狀肌附近找到了一些關於「單擊雙擊」有關的操作體驗的記憶,那就是「取消點擊」,這個被無視卻又最常用的操作。
於是今天先做基礎功能「單擊雙擊」,和一個優化體驗的功能,「取消點擊」,
點擊保存時,突然想起今天心血來潮把項目改的爛七八糟,這保存已經按下去了,一撒手可能會死
此時你按住按鈕不鬆手,拖出範圍再釋放,達到了取消點擊行爲的目的
你因爲後怕而出了一身冷汗,如果沒有這個後悔藥機制,明天就可能去天橋賣手抓餅了
姑且用核彈發射舉個例子,要做一個點擊按鈕發射核彈的發射系統
順序 | 邏輯 | 信息反饋 | 說明 |
---|---|---|---|
1 | 移動鼠標到可交互的元素上(例如一個按鈕狀的模型) | 可選擇 | 鼠標指針改變成手指圖標、或者按鈕上顯示出「Don’t Touch Anything」等,用於示意此按鈕爲可點擊的元素 |
2 | 按下並保持按下狀態 | 按下 | 此時按鈕以是按下的視覺狀態,但仍未觸發事件 |
3 | 判斷 | - | 系統開始緊張起來了,用戶此時會突然拖動鼠標 反悔嗎? |
4 | 原地擡起/拖動擡起 | 復原爲默認狀態或已被使用狀態 | 執行發射/取消發射 |
①
單擊是擡起鼠標才「確認」執行後續功能
②
反悔機制,例如用戶A想發射核彈,按下按鈕時,用餘光發現核彈目標定在了自己家,現在突然反悔,此時可以在不擡起鼠標的情況下,拖動鼠標移出按鈕再鬆手。這樣可以取消觸發點擊操作
注意
雙擊是單擊兩次,必含一個單擊。也就是理論上不能單雙擊功能共存
例如:單擊按鈕的功能是發射核彈,雙擊按鈕的功能是彈出修改核彈目標的窗口
此時用戶A如果想修改核彈目標,就會在雙擊的第一擊按完、第二擊未按之前,讓自己的戶口地址從地球上抹去
做相關業務的同行務必慎重
嗯,我一如既往的信任蚯狀肌,並以此爲邏輯開始
要說明UMG的小部件可以用自帶的 onDoubleClick ,操作UMG按鈕之類的部件可以直接使用。此處藍圖適用於UMG部件以外的用處。
創建宏
新建一個 藍圖宏庫 。這裏做成獨立的宏,就可以在任何藍圖使用它,而不會與自身發生衝突。
這裏要注意!宏庫只能保存不能編譯。若修改了宏的內容,需要去編譯使用了這個宏的藍圖
用帥氣的指法將宏庫命名爲 Macro_Click
點擊加號新建一個宏,命名爲 Click (右邊上角紅框處)
藍圖內容如圖
擴展一下,宏中是沒有全局變量的,而下面的 Local布爾型 (Local Boolean) 就是宏的局部變量,相當於 get 變量 第一次看到的朋友不要慌張。而上面的 分配(Assign) 自然就是 Set 變量
具體節點功能在這裏就不細說了,官方文檔都可以查得到
在關卡藍圖中使用宏
內容如圖,在關卡藍圖直接輸入Click就可以找到我們自己做的宏了
至此,單擊雙擊的最最基礎的功能就已經實現了
在宏中添加新功能
如圖所示,很基礎,沒什麼複雜的東西,改了輸入值和輸出值的名字等,還調皮的把實例材質改成紅色
取消點擊部分:
通過獲取按下和擡起時的屏幕位置,計算出這個過程中鼠標位移了多少距離。這裏用 Get mouse Position on Platform 是因爲我覺得顯示器的大小會比窗口的大小準確,也適合更復雜的情況。然後對比 「取消點擊的距離」 值,判斷用戶是否已經做出了 「取消單擊」 的操作
將距離連到輸入值 「取消點擊的距離」 ,使其可以在外部進行修改。
「取消點擊的距離」 的默認值此時設置爲10,「雙擊間隔」 爲0.25
增加了判斷,使其若「取消點擊」,就不執行「單擊」和「雙擊」
最後保存宏,把修改好的宏連上打印,編譯,測試ok
今天就做到這裏,實現了基礎的單擊雙擊和取消點擊。今後有時間還會繼續完善擴展這個Click宏的功能~~
話說回來蚯狀肌到底是哪塊?