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