次の方法で共有


XGameStreamingShowTouchControlsWithStateUpdateOnClient

指定したストリーミング クライアントのデバイスがデバイスのタッチ コントロールの状態を更新し、指定したタッチ レイアウトを表示することを要求します。 状態の更新はすべて、新しいタッチ レイアウトが表示される前に行われます。

構文

HRESULT XGameStreamingShowTouchControlsWithStateUpdateOnClient(  
         XGameStreamingClientId client,  
         const char* layout,  
         size_t operationCount,  
         const XGameStreamingTouchControlsStateOperation* operations  
)  

パラメーター

client _In_
型: XGameStreamingClientId

状態を更新してタッチ コントロールを表示するストリーミング クライアント デバイス。

layout _In_opt_z_
型: char*

表示するタッチ コントロール レイアウトの名前、または標準レイアウトを表示する nullptr

operationCount _In_
型: size_t

渡される操作の配列のサイズ。

operations _In_reads_opt_(operationCount)
型: XGameStreamingTouchControlsStateOperation*

要求されているすべての状態変数の更新の配列。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合はエラー コードを返します。

返される可能性のあるエラー

エラー コード エラー値 エラーの原因
E_GAMESTREAMING_NOT_INITIALIZED 0x89245400 XGameStreaming ランタイムが初期化されていません。 他の API を呼び出す前に XGameStreamingInitialize を呼び出してください。
E_GAMESTREAMING_CLIENT_NOT_CONNECTED 0x89245401 指定されたクライアントが接続されていません。
E_INVALIDARG 0x80070057 指定された操作には、操作 XGameStreamingTouchControlsStateValueKind で指定されたデータ型と一致するデータがありません

解説

この API は、ゲームで特定のタッチ レイアウトを表示させ、レンダリングに影響を与える可能性のある何らかの状態の更新もこのレイアウトで要求する場合に使用するようにします。 この API は、新しいタッチ レイアウトで参照される変数の状態の更新と、指定されたストリーミング クライアント デバイスでのタッチ レイアウトの切り替えの両方を行う場合に使用します。  この API によって、すべての状態の更新は、必ず新しいレイアウトが表示される前に行われるようになります。

すべてのストリーミング クライアント デバイスに影響を与える場合は、XGameStreamingShowTouchControlsWithStateUpdate を使用します。

ゲームでレイアウトのみを変更する必要がある場合、ゲームは代わりに XGameStreamingShowTouchControlLayoutOnClient を使用する必要があります。

状態の更新が現在のレイアウトまたはその他のレイアウトに影響する可能性があり、特定のタッチ レイアウトの変更にかかわらず更新を行う必要がある場合は、ゲームでは代わりに XGameStreamingUpdateTouchControlsStateOnClient を使用する必要があります。

// In this example, the player has just selected a specific building in an strategy game 
// and the game wants to populate the two building specific action slots with the appropriate imagery
// before selecting the layouts
//
// Assumes passing in game structure that refers to the selected building and a game function to get the image
// assets for a particular building capability and the client to be updated


void GameStreamingClientManager::UpdateBuildingStateAndControls(const BuildingProperties& building, XGameStreamingClientId clientId)
{
    
    

    std::vector<XGameStreamingTouchControlsStateOperation> updateOperations;
    
    // update the image for the first two building slots   
    XGameStreamingTouchControlsStateOperation buildingCapability1Image;
    buildingCapability1Image.operationKind = XGameStreamingTouchControlsStateOperationKind::Replace;
    buildingCapability1Image.path = "/buildingCapability1Image";
    buildingCapability1Image.valueKind = XGameStreamingTouchControlsStateValueKind::String;
    buildingCapability1Image.stringValue =  GetImageName(building.capability[0].id);        
    updateOperations.push_back(buildingCapability1Image);

    XGameStreamingTouchControlsStateOperation buildingCapability2Image;
    buildingCapability2Image.operationKind = XGameStreamingTouchControlsStateOperationKind::Replace;
    buildingCapability2Image.path = "/buildingCapability2Image";
    buildingCapability2Image.valueKind = XGameStreamingTouchControlsStateValueKind::String;
    buildingCapability2Image.stringValue =  GetImageName(building.capability[1].id);        
    updateOperations.push_back(buildingCapability2Image);
    
    // enable the second slot if the building is of level 3 or above, otherwise the third slot will be disabled
    XGameStreamingTouchControlsStateOperation buildingCapability2Enabled;
    buildingCapability2Enabled.operationKind = XGameStreamingTouchControlsStateOperationKind::Replace;
    buildingCapability2Enabled.path = "/buildingCapability2IsEnabled";
    buildingCapability2Enabled.valueKind = XGameStreamingTouchControlsStateValueKind::Boolean;
    buildingCapability2Enabled.booleanValue =  building.level >= 3;
    updateOperations.push_back(buildingCapability2Enabled);
  
    // Switch to the building layout with the state update being sent as well
    XGameStreamingShowTouchControlsWithStateUpdateOnClient(clientId, "building", updateOperations.size(), updateOperations.data());
}

要件

ヘッダー: XGameStreaming.h

ライブラリ: xgameruntime.libサポートされているプラットフォーム: Windows、Xbox One ファミリ本体と Xbox Series 本体

関連項目

XGameStreaming
XGameStreamingTouchControlsStateOperationKind
XGameStreamingTouchControlsStateOperation
XGameStreamingTouchControlsStateValue
XGameStreamingShowTouchControlsWithStateUpdate
XGameStreamingUpdateTouchControlsState
XGameStreamingUpdateTouchControlsStateOnClient