feat: 添加打开Steam商店页功能
This commit is contained in:
@@ -18,6 +18,7 @@ namespace AibisDream.Utility
|
|||||||
public const string SurveyURL_JP = "https://jsj.top/f/icnVug";
|
public const string SurveyURL_JP = "https://jsj.top/f/icnVug";
|
||||||
|
|
||||||
public const string WishlistURL = "https://store.steampowered.com/app/3473430/_All_Our_Broken_Parts?utm_source=playtest";
|
public const string WishlistURL = "https://store.steampowered.com/app/3473430/_All_Our_Broken_Parts?utm_source=playtest";
|
||||||
|
public const string SteamWishlistURL = "steam://store/3473430";
|
||||||
|
|
||||||
public static readonly string SaveFilePath = Path.Combine(Application.persistentDataPath, "demo_saves");
|
public static readonly string SaveFilePath = Path.Combine(Application.persistentDataPath, "demo_saves");
|
||||||
#if UNITY_EDITOR || DEVELOPMENT_BUILD
|
#if UNITY_EDITOR || DEVELOPMENT_BUILD
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
#endif
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AibisDream.Utility
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 打开游戏的 Steam 商店页面。
|
||||||
|
/// </summary>
|
||||||
|
public static class SteamStoreUtility
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
private const uint AssocStrCommand = 1;
|
||||||
|
private const int S_OK = 0;
|
||||||
|
|
||||||
|
[DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
|
||||||
|
private static extern int AssocQueryString(
|
||||||
|
uint flags,
|
||||||
|
uint str,
|
||||||
|
string association,
|
||||||
|
string extra,
|
||||||
|
StringBuilder output,
|
||||||
|
ref uint outputLength);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Windows 下优先使用 Steam 客户端;Steam 协议不可用时回退到网页商店。
|
||||||
|
/// </summary>
|
||||||
|
public static void OpenWishlistPage()
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
if (IsSteamProtocolRegistered())
|
||||||
|
{
|
||||||
|
Application.OpenURL(ConstRef.SteamWishlistURL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Application.OpenURL(ConstRef.WishlistURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
private static bool IsSteamProtocolRegistered()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
uint commandLength = 0;
|
||||||
|
AssocQueryString(0, AssocStrCommand, "steam", null, null, ref commandLength);
|
||||||
|
if (commandLength == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var command = new StringBuilder((int)commandLength);
|
||||||
|
var result = AssocQueryString(
|
||||||
|
0,
|
||||||
|
AssocStrCommand,
|
||||||
|
"steam",
|
||||||
|
null,
|
||||||
|
command,
|
||||||
|
ref commandLength);
|
||||||
|
return result == S_OK && command.Length > 0;
|
||||||
|
}
|
||||||
|
catch (System.Exception exception)
|
||||||
|
{
|
||||||
|
Debug.LogWarning(
|
||||||
|
$"[SteamStoreUtility] 无法检测 Steam URL Protocol,将回退到网页商店:{exception.Message}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5d54f85d89d04849a54cde529cb66d55
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Reference in New Issue
Block a user