콘텐츠로 이동

ISteamworksContext

Steamworks SDK를 사용할 수 있는 상태인지 알려 주는 인터페이스입니다. 현재 빌드 대상이 Steamworks SDK를 지원하는지, 앱이 Steamworks SDK를 초기화해 Steam 클라이언트에 연결됐는지를 확인합니다. Steamworks SDK를 초기화하거나 종료하지는 않습니다.

  • 인터페이스: ISteamworksContext
  • 네임스페이스: Hive.Axyl.Steamworks
  • 패키지: com.com2usplatform.hiveaxyl.steamworks

획득

SteamworksContext.CreateDefault()로 현재 빌드 대상에 맞는 구현을 만듭니다. HiveBootstrap.Initialize에 등록하거나 HiveCore.Resolve<T>()로 가져오지 않습니다.

SteamAPI.Init()을 호출하기 전에 만들어도 됩니다. 만든 객체는 앱이 종료될 때까지 그대로 사용할 수 있으며, 지원하지 않는 플랫폼에서는 두 프로퍼티가 항상 false인 구현이 반환됩니다.

static ISteamworksContext CreateDefault()

지원 플랫폼

플랫폼 지원 설명
Windows 지원 Steam 클라이언트가 실행 중이어야 합니다.
macOS 지원 Steam 클라이언트가 실행 중이어야 합니다.
Linux 미지원 Steamworks SDK 연동을 지원하지 않습니다.
Android, iOS 미지원 이 플랫폼에서 Steam 계정으로 로그인하는 방법은 Windows와 macOS 외 OS를 참조하세요.

지원하지 않는 플랫폼에서도 SteamworksContext.CreateDefault()는 예외 없이 객체를 반환하므로, 플랫폼을 가려 호출할 필요는 없습니다. IsSupported로 지원 여부를 확인하세요.

프로퍼티

프로퍼티 타입 설명
IsSupported bool 현재 빌드 대상이 Steamworks SDK를 실행할 수 있으면 true입니다. Windows와 macOS 빌드에서만 true입니다.
IsInitialized bool 앱이 Steamworks SDK를 초기화했고 Steam 클라이언트가 실행 중이어서 연결할 수 있으면 true입니다. Windows와 macOS에서는 SteamAPI.IsSteamRunning()의 결과이며, 그 밖의 플랫폼에서는 항상 false입니다.

앱이 SteamAPI.Init()을 호출하기 전에 IsInitialized가 false인 것은 정상이며, 초기화 순서를 맞추는 동안 나오는 false는 오류가 아닙니다.

호출 예시

using Hive.Axyl.Steamworks;

ISteamworksContext steamworks = SteamworksContext.CreateDefault();

if (!steamworks.IsInitialized)
{
    // 지원하지 않는 플랫폼이거나 Steamworks SDK를 아직 초기화하지 않았습니다.
    // Steam 로그인 버튼을 감추거나 Steam 클라이언트 실행을 안내하세요.
    return;
}

// Steam 로그인 Add-on과 Steam 결제 Add-on을 호출할 수 있습니다.

Steamworks SDK 생명주기

이 모듈은 SteamAPI.Init(), SteamAPI.RunCallbacks(), SteamAPI.Shutdown()을 호출하지 않습니다. 세 호출은 모두 앱이 담당합니다.

  1. 앱 시작: SteamAPI.Init() 한 번 호출
  2. 매 프레임: SteamAPI.RunCallbacks() 호출
  3. 앱 종료: SteamAPI.Shutdown() 한 번 호출

SteamAPI.RunCallbacks()를 매 프레임 호출하지 않으면 Steamworks의 콜백이 전달되지 않아 Steam 인증 티켓 요청과 결제 승인 콜백 같은 작업이 응답을 받지 못합니다.

초기화 절차와 개발 중 steam_appid.txt 준비 방법은 Steamworks 초기화를 참조하세요.

macOS 빌드 후처리

Steamworks.NET이 제공하는 steam_api.bundle의 번들 식별자에는 밑줄이 들어 있어 App Store와 TestFlight 검증을 통과하지 못합니다. 이 모듈은 macOS 빌드를 마친 뒤 그 식별자를 검증을 통과하는 값으로 바꿉니다. 앱이 따로 설정할 것은 없으며, 이 후처리는 외부 코드 서명 전에 실행됩니다.