using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using Steamworks; using UnityEditor.XR; namespace BITKit.Steamwork { public class SteamService : MonoBehaviour,ISteamService { internal static SteamService Singleton; [Header(Constant.Header.Settings)] [SerializeField]private uint appId=480; //接口实现 public ulong SteamId => SteamClient.SteamId; public string Name => SteamClient.Name; public bool IsInitialized=>SteamClient.IsValid&&SteamClient.IsLoggedOn; public int Id => (int)SteamClient.SteamId.AccountId; private bool initialized; private void Awake() { Singleton = this; } private void Start() { try { if (SteamClient.IsValid is false) { SteamClient.Init(appId); } initialized = true; BIT4Log.Log("已初始化Steam"); } catch (Exception) { BIT4Log.Warning("Steam初始化失败,请验证客户端是否运行"); throw; } } private void OnDestroy() { if (initialized) SteamClient.Shutdown(); } } [Serializable] public class SteamServiceSingleton:ISteamService { private ISteamService _steamServiceImplementation=>SteamService.Singleton; public int Id => _steamServiceImplementation.Id; public ulong SteamId => _steamServiceImplementation.SteamId; public string Name => _steamServiceImplementation.Name; public bool IsInitialized=>_steamServiceImplementation.IsInitialized; } }