调用 Steam 界面时如何在 Unity 中暂停游戏

How to pause game in Unity when the Steam Overlay is called

我正在为 Steam 平台在 Unity 中开发游戏。我想知道如何在调用 Steam 界面时暂停游戏。我尝试了几件事,但没有任何效果。

Steamworks API 在 ISteamUtils 界面中有一个名为 IsOverlayEnabled 的函数,您可以调用它来检查 Steam 界面当前是否处于活动状态。通过定期检查此功能,您可以在需要时调出暂停屏幕。

IsOverlayEnabled

bool IsOverlayEnabled();

Checks if the Steam Overlay is running & the user can access it.

The overlay process could take a few seconds to start & hook the game process, so this function will initially return false while the overlay is loading.

Returns: bool

https://partner.steamgames.com/doc/api/ISteamUtils#IsOverlayEnabled

Steam bool isOverlayEnabled() 函数的基本用法。请注意,首先需要将 Steamworks.Net 包下载并安装到您的 Unity 项目中。未经测试,但可能不需要继承 Monobehavior...

using Steamworks;

public class DemoClass : Monobehaviour {

    if(SteamUtils.IsOverlayEnabled()) {
        // pause...
    }
}

1 确保您使用的是:

using SteamWorks

2创建回调

protected Callback<GameOverlayActivated_t> overlayIsOn;

3 启动时检查 Steam 管理器是否已初始化

 if (!SteamManager.Initialized)
        {
            return;
        }

4 制作一个接受回调的函数

void PauseGameIfSteamOverlayOn(GameOverlayActivated_t callback)
    {
        if (canPause)
        {
            // PAUSE GAME
        }
    }

5 创建回调变量并添加函数

 overlayIsOn = Callback<GameOverlayActivated_t>.Create(PauseGameIfSteamOverlayOn);