XGameStreamingShowTouchControlsWithStateUpdate

연결된 모든 스트리밍 클라이언트 장치가 터치 제어 상태를 업데이트하고 터치 레이아웃을 표시하도록 요청합니다. 모든 상태 업데이트는 새 터치 레이아웃이 표시되기 전에 수행됩니다.

구문

HRESULT XGameStreamingShowTouchControlsWithStateUpdate(  
         const char* layout,  
         size_t operationCount,  
         const XGameStreamingTouchControlsStateOperation* operations  
)  

매개 변수

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_INVALIDARG 0x80070057 지정된 작업에 XGameStreamingTouchControlsStateValueKind 작업에 지정된 데이터 유형과 일치하는 데이터가 없습니다.

비고

게임에서 특정 터치 레이아웃을 보여주어야 할 때 이 API를 사용해야 하며, 이 경우 렌더링에 영향을 미칠 수 있는 상태 업데이트가 필요합니다. 새 터치 레이아웃에서 참조되는 변수의 상태를 업데이트하고 연결된 스트리밍 클라이언트 장치의 터치 레이아웃으로 전환하려면 이 API를 사용합니다. 이 API를 사용하면 새 레이아웃이 표시되기 전에 모든 상태 업데이트가 수행됩니다.

특정 클라이언트에만 영향을 미치려면 XGameStreamingShowTouchControlsWithStateUpdateOnClient를 사용하세요.

게임에서 레이아웃만 변경하려는 경우 게임에 XGameStreamingShowTouchControlLayout를 대신 사용해야 합니다.

상태 업데이트가 현재 레이아웃이나 다른 레이아웃에 영향을 미칠 수 있고 특정 터치 레이아웃 변경에 관계없이 업데이트가 발생해야 하는 경우 게임에 XGameStreamingUpdateTouchControlsState를 대신 사용해야 합니다.

// 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.


void GameStreamingClientManager::UpdateBuildingStateAndControls(const BuildingProperties& building)
{
    
    

    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
    XGameStreamingShowTouchControlsWithStateUpdate("building", updateOperations.size(), updateOperations.data());
}

요건

헤더: XGameStreaming.h

라이브러리: xgameruntime.lib
지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

XGameStreaming
XGameStreamingTouchControlsStateOperationKind
XGameStreamingTouchControlsStateOperation
XGameStreamingTouchControlsStateValue
XGameStreamingShowTouchControlsWithStateUpdateOnClient
XGameStreamingUpdateTouchControlsState
XGameStreamingUpdateTouchControlsStateOnClient