? ,,

成人aa视频在线观看_色婷婷精品久久二区二区蜜臂av _国产一区二区三区在线观看免费 _韩日欧美一区二区三区_午夜成人免费视频_欧美综合久久久_国产精品国产三级国产普通话99 _福利一区二区在线观看_奇米精品一区二区三区在线观看_91精品国产综合久久福利_免费精品视频在线_狠狠色丁香久久婷婷综合_中_色一区在线观看_91福利国产成人精品照片_在线观看www91_日韩高清在线一区

聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽街道洪山路國際工業(yè)設(shè)計(jì)園納金網(wǎng)

郵箱:info@narkii.com

電話:0595-82682267

(周一到周五, 周六周日休息)

當(dāng)前位置:主頁 > 3D教程 > 圖文教程

Unreal Engine4鍵位更換以及對應(yīng)思考

來源: 52vr | 責(zé)任編輯:傳說的落葉 | 發(fā)布時間: 2019-06-13 08:16 | 瀏覽量:

Unreal Engine 4 —— 鍵位更換以及對應(yīng)思考

 
這篇文章介紹了如何在UE4中實(shí)現(xiàn)更換鍵位的方法。
 
介紹
 
在大多數(shù)的PC游戲中,為了適應(yīng)大多數(shù)玩家,往往會提供鍵位設(shè)置的接口。雖然也有例如生化危機(jī)系列游戲提供的是幾個輸入類型供玩家自己選擇,然而還是自定義輸入的方法更加普遍。
 
需要注意的是,很多的PC游戲的輸入控制都是即支持手柄,又支持鍵盤\鼠標(biāo)操控的。但是往往要么只啟用手柄操作,要么只啟用鍵盤\鼠標(biāo)操作。關(guān)于這一塊的詳細(xì)內(nèi)容可以參考我以前的博客:游戲輸入控制的五條黃金法則
 
前置問題
 
在了解虛幻4的鍵位更換功能之前,首先要思考一些問題,這些問題確定了之后,才能進(jìn)一步的去實(shí)現(xiàn)鍵位的更換功能。
 
鍵位配置是否寫入存檔?持久化保存該如何進(jìn)行? 
UE4的鍵位配置是默認(rèn)讀取對應(yīng)的Input.ini文件的,因此在進(jìn)行鍵位配置的時候,比較通用的方法是寫入對應(yīng)的ini文件。但是如果鍵位配置寫入存檔就是另一套方法了,甚至不需要進(jìn)行持久化的保存。
 
輸入設(shè)備的切換該如何抉擇? 
參考我以前的博客:游戲輸入控制的五條黃金法則
 
組合鍵? 
UE4內(nèi)置的組合鍵有ctrl,shift,cmd與alt,這些鍵可以與普通按鍵進(jìn)行組合。在項(xiàng)目中是否需要進(jìn)行這些組合鍵的應(yīng)用?
 
Axis與Action的歸一? 
手柄的搖桿Axis通常對應(yīng)著−1.0~1.0或者0.0~1.0的值,但是鍵鼠上的Action往往只有一個固定的值。例如游戲中的停~走~跑操作在手柄上往往是半推~全推搖桿實(shí)現(xiàn)的,但是放在鍵盤上則只有一個輸入值(通常為最大值,也就是跑)。某些游戲中(RPG游戲居多)可能會預(yù)設(shè)一些固定的值用于切換走/跑切換,但是畢竟還是離散的值,與Axis有本質(zhì)的區(qū)別。
 
是否允許一個鍵來映射多個操作? 
例如允許將一個鍵用于多個操作?這樣一來針對于Input Consumption需要有一系列的配置。
 
在上面這些問題都有了答案,或者說設(shè)計(jì)方案之后,鍵位更換的功能才好真正實(shí)現(xiàn)。
 
鍵位更換在UE4中的具體實(shí)現(xiàn)
 
其實(shí)……具體實(shí)現(xiàn)的方法并不太難,以ActionMapping的重新綁定為范例,代碼如下:
 

[代碼]:

01 UInputSettings* Settings = const_cast<uinputsettings*>(GetDefault<uinputsettings>());
02 TArray<finputactionkeymapping>& Axes = Settings->ActionMappings;
03  
04 for (auto& Mapping : Axes)
05 {
06     // 篩選對應(yīng)的action mapping
07     if (Mapping.ActionName == MappingName && Mapping.bAlt == Alt && Mapping.bCmd == Cmd && Mapping.bCtrl == Ctrl && Mapping.bShift == Shift && Mapping.Key == Key)
08     {
09         auto actionMap = Mapping;
10         actionMap.ActionName = NewData.MappingName;
11         actionMap.bAlt = NewData.Alt;
12         actionMap.bCmd = NewData.Cmd;
13         actionMap.bCtrl = NewData.Ctrl;
14         actionMap.bShift = NewData.Shift;
15         actionMap.Key = NewData.Key;
16  
17         // 重構(gòu)KeyMap
18         for (TObjectIterator<uplayerinput> It; It; ++It)
19         {
20             // 之所以這么做是希望更改之后立刻生效
21             It->RemoveActionMapping(Mapping);
22             It->AddActionMapping(actionMap);
23             It->ForceRebuildingKeyMaps();
24         }
25         // 在這里更改Mapping的值,從而將其持久化存儲
26         Mapping.ActionName = NewData.MappingName;
27         Mapping.bAlt = NewData.Alt;
28         Mapping.bCmd = NewData.Cmd;
29         Mapping.bCtrl = NewData.Ctrl;
30         Mapping.bShift = NewData.Shift;
31         Mapping.Key = NewData.Key;
32  
33         // 持久化儲存
34         Settings->SaveKeyMappings();
35     }
36 }</uplayerinput></finputactionkeymapping></uinputsettings></uinputsettings*>
 
各種東西似乎都……在注釋中寫好了,看代碼就行……
 
需要注意的問題
 
有一個踩過的坑,需要注意一下。
 
當(dāng)初為了避免過多的Cast導(dǎo)致性能的消耗,我們將PlayerController的實(shí)例進(jìn)行了靜態(tài)存儲,但是最終發(fā)現(xiàn)好像……會導(dǎo)致亂七八糟的問題……
 
 


相關(guān)文章
網(wǎng)友評論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊

關(guān)閉

全部評論:0條

推薦
熱門
成人aa视频在线观看_色婷婷精品久久二区二区蜜臂av _国产一区二区三区在线观看免费 _韩日欧美一区二区三区_午夜成人免费视频_欧美综合久久久_国产精品国产三级国产普通话99 _福利一区二区在线观看_奇米精品一区二区三区在线观看_91精品国产综合久久福利_免费精品视频在线_狠狠色丁香久久婷婷综合_中_色一区在线观看_91福利国产成人精品照片_在线观看www91_日韩高清在线一区

          性欧美疯狂xxxxbbbb| ...中文天堂在线一区| 亚洲视频sss| 亚洲一区高清| 国产成人免费在线观看不卡| 国产盗摄精品一区二区三区在线| 国产乱码字幕精品高清av| 国内一区二区在线| 成人国产在线观看| 91精品国产99久久久久久红楼| 成人欧美一区二区| 免费在线成人av电影| 亚洲精品在线视频观看| 欧美日韩在线直播| 精品粉嫩超白一线天av| 中文字幕日韩av资源站| 亚洲大型综合色站| 国内精品自线一区二区三区视频| 丁香天五香天堂综合| 风间由美一区二区三区| 涩涩涩999| 欧美日韩五月天| 国产欧美日韩在线看| 一区二区免费看| 国产乱码精品一区二区三区av| 99视频精品在线| 欧洲av一区| 在线播放91灌醉迷j高跟美女| 国产亚洲精品中文字幕| 亚洲午夜久久久久久久久久久| 国产综合久久久久久久久久久久| 岛国一区二区三区高清视频| 中日韩在线视频| 久久综合av免费| 亚洲mv在线观看| 成人黄色一级视频| 亚洲国产精品视频一区| 日韩精品最新网址| 亚洲超丰满肉感bbw| 成人理论电影网| 日韩欧美精品一区二区| 精品黑人一区二区三区久久| 亚洲国产日韩a在线播放性色| 成人美女在线视频| 中文字幕一区二区三区四区五区 | 日韩电影在线观看网站| 97久久超碰国产精品电影| 亚洲一区二区高清视频| 国产婷婷一区二区| 男女男精品视频网| 久久国产欧美精品| 精品成人一区二区三区四区| 日韩中文字幕1| 久久手机视频| 久久久影视传媒| 韩国欧美一区二区| 日韩理论片在线观看| 国产日韩一级二级三级| 另类小说视频一区二区| 九色视频成人porny| 欧美va亚洲va国产综合| 久久精品国产网站| 欧美视频观看一区| 日本一区二区电影| 夫妻av一区二区| 在线日韩国产精品| 一区二区三区中文在线| 91在线国内视频| 欧美一区二区三区免费在线看 | 亚洲欧美久久234| 国产精品天天看| 国产成人精品免费网站| 色婷婷一区二区三区四区| 综合久久综合久久| 91蜜桃视频在线| 精品久久久久一区二区国产| 精品一区二区三区在线观看| 亚洲欧美日韩国产成人综合一二三区| 中文字幕在线观看一区二区| www.亚洲色图.com| 日韩一区二区影院| 国产精品123区| 欧美精品国产精品| 韩国精品主播一区二区在线观看| 一本一本久久a久久精品综合麻豆| 亚洲精品视频一区| 蜜桃麻豆91| 一区二区三区精品视频| 久久伦理网站| 亚洲人午夜精品天堂一二香蕉| ts人妖另类在线| 欧美极品美女视频| 国产日韩欧美亚洲一区| 国产精品乱人伦| 国产欧美日韩一区二区三区| 国产精品免费人成网站| 国产精品久久亚洲| 国产精品久久久久9999吃药| 国产亚洲二区| 一区二区三区中文免费| 亚洲第一导航| 日本成人在线看| 欧美性淫爽ww久久久久无| 激情综合色综合久久| 91精品国产色综合久久不卡电影 | 日韩理论片在线观看| 亚洲一区二区偷拍精品| 日本精品一区二区三区视频 | 日韩欧美亚洲日产国| 亚洲免费在线视频一区 二区| 久久国产精品亚洲va麻豆| 亚洲视频小说图片| 日本一区二区三区免费看| 亚洲成人av资源| 91国偷自产一区二区开放时间| 国产最新精品精品你懂的| 日韩免费视频一区| 国产精品久久久对白| 有坂深雪av一区二区精品| 一本久道中文字幕精品亚洲嫩 | 美日韩免费视频| 亚洲午夜精品在线| 色哟哟国产精品免费观看| 国产一区二区h| 国产欧美日韩在线视频| 日本一区高清在线视频| 久久aⅴ国产欧美74aaa| 久久久一区二区| 欧美日韩一区二区视频在线观看| 日韩影院精彩在线| 日韩欧美在线网站| 精品国产乱码久久久久| 青青草国产成人av片免费| 日韩欧美卡一卡二| 国产一区福利视频| 奇米精品一区二区三区在线观看一| 91麻豆精品国产无毒不卡在线观看 | 日韩国产一二三区| 91精品国产品国语在线不卡| 99精品国产一区二区| 亚洲成年人网站在线观看| 91精品国产aⅴ一区二区| 国产精品视频一区二区三区经| 婷婷综合久久一区二区三区| 欧美电影免费观看高清完整版在线| 国模精品娜娜一二三区| 麻豆专区一区二区三区四区五区| 2021中文字幕一区亚洲| 午夜精品一区二区三区四区 | 国产九区一区在线| 蜜臀av一区二区三区| 久久午夜羞羞影院免费观看| 日本亚洲欧洲精品| 成人免费毛片app| 天天综合色天天综合色h| 久久女同精品一区二区| 一区二区三区av| 成人午夜影院在线观看| 精品一区二区三区欧美| 亚洲同性gay激情无套| 91精品国产欧美一区二区成人| 欧美色图亚洲自拍| 96av麻豆蜜桃一区二区| 美女爽到高潮91| 亚洲天堂久久久久久久| 欧美一区永久视频免费观看| 日韩av一区二区三区美女毛片| 99麻豆久久久国产精品免费优播| 日日摸夜夜添夜夜添国产精品| 国产精品情趣视频| 欧美一区二区三区性视频| 一区二区三区在线视频111| 97碰碰视频| 国产 欧美在线| 日本一区中文字幕| 亚洲乱码国产乱码精品精的特点| 日韩亚洲欧美中文三级| 色老汉av一区二区三区| 久久99蜜桃综合影院免费观看| 成人性生交大片免费看中文网站| 天天影视网天天综合色在线播放| 国产精品日日摸夜夜摸av| 精品国产一区二区在线观看| 欧美丝袜自拍制服另类| 日本一区网站| 国产一区二区高清不卡| av中文字幕在线不卡| 国产美女在线精品| 欧美a一区二区| 午夜精品久久久久久| 亚洲色图.com| 国产精品福利一区二区| 久久久久国产免费免费| 欧美mv日韩mv亚洲| 日韩视频在线观看一区二区| 欧美日本视频在线| 欧美视频一区二区三区四区| 在线看视频不卡| 亚洲欧洲精品一区| 图片区小说区区亚洲五月|