LegacyGipGameControllerProvider.SetStandardControllerButtonRemapping 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
變更用戶標準遊戲板的按鈕和軸對應。
public:
virtual void SetStandardControllerButtonRemapping(User ^ user, bool previous, IMapView<RemappingButtonCategory, Platform::Object ^> ^ remapping) = SetStandardControllerButtonRemapping;
void SetStandardControllerButtonRemapping(User const& user, bool const& previous, IMapView<RemappingButtonCategory, IInspectable const&> const& remapping);
public void SetStandardControllerButtonRemapping(User user, bool previous, IReadOnlyDictionary<RemappingButtonCategory,object> remapping);
function setStandardControllerButtonRemapping(user, previous, remapping)
Public Sub SetStandardControllerButtonRemapping (user As User, previous As Boolean, remapping As IReadOnlyDictionary(Of RemappingButtonCategory, Object))
參數
- user
- User
要重新對應控制器的使用者。
- previous
-
Boolean
bool
True
如果對應應該儲存在非使用中的上一個存放區中,則為 ; false
如果應該套用對應,則為 。
- remapping
-
IMapView<RemappingButtonCategory,Platform::Object>
IMapView<RemappingButtonCategory,IInspectable>
比對每個 RemappingButtonCategory 與指定重新對應之數據的字典。 資料類型是類別特有的,如下所示:
RemappingButtonCategory | 資料描述 |
---|---|
ButtonsSettings | 由 16 個 nibbles 組成的 uint64。 每個 Nibble 都代表按鈕的指派。 標準指派0xfedcba9876543210 |
AnalogSettings | 具有下列效果的 uint32:0x1: Swaps triggers / 0x2 : Swaps Thumbsticks / 0x4 : 反轉左指桿 / 0x8 :反轉右指桿。 標準指派為 0。 |
VibrationSettings | 具有下列效果的 uint32:0x01:停用震動。 標準指派為 0。 |
範例
void RemapButtons(IGameController controller, IGameControllerProvider controllerProvider)
{
LegacyGipGameControllerProvider legacyGipGameControllerProvider =
LegacyGipGameControllerProvider.FromGameControllerProvider(controllerProvider);
// Retrieve all current remappings set for standard controllers
IReadOnlyDictionary<RemappingButtonCategory, object> currentMappings =
legacyGipGameControllerProvider.GetStandardControllerButtonRemapping(
controller.User, false);
// Swap two of the buttons
Dictionary<RemappingButtonCategory, object> remaps =
new Dictionary<RemappingButtonCategory, object>();
// Duplicates are not allowed. Swap two of the buttons
UInt64 currentButtonMappings =
(UInt64)currentMappings[RemappingButtonCategory.ButtonSettings];
// Isolate the buttons we want to remap
UInt64 lastButton = (currentButtonMappings & 0xf000000000000000);
UInt64 secondLastButton = currentButtonMappings & 0x0f00000000000000;
// Swap their positions
UInt64 newMapping = (lastButton >> 4) | (secondLastButton << 4);
// Recombine with the original mappings
UInt64 newButtonMappings = (currentButtonMappings & 0x00ffffffffffffff) | newMapping;
// Add the new button remappings to the mapping dictionary
remaps.Add(RemappingButtonCategory.ButtonSettings, newButtonMappings);
// Update controller mapping
legacyGipGameControllerProvider.SetStandardControllerButtonRemapping(
controller.User, false, newButtonMappings);
}
備註
ButtonSettings 的按鈕順序從最顯著到最不重要是:右指桿、左指桿、右手、左手、左手、DPad Right、DPad Left、DPad Down、DPad Up、Y、X、B、A、View、Menu、Guide 和 Bind。
一般而言, 先前 的參數應該是 false
,這會套用重新對應。 它也可以用來儲存對應以供稍後 (,例如,在套用自定義對應之前儲存默認對應,以便稍後還原預設對應) 。
警告
控制器對應是指定使用者的全系統且持續。 這應該只會在使用者的指示下完成。