【问题标题】:How to pause game in Unity when the Steam Overlay is called调用 Steam Overlay 时如何在 Unity 中暂停游戏
【发布时间】:2019-10-21 12:00:34
【问题描述】:

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

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
  • 这是一个寻求一般方法的好问题。

标签: c# unity3d steam


【解决方案1】:

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

IsOverlayEnabled

bool IsOverlayEnabled();

检查 Steam Overlay 是否正在运行以及用户是否可以访问它。

覆盖过程可能需要几秒钟才能启动并挂起游戏 过程,所以这个函数最初会返回 false 而 覆盖正在加载。

返回: bool

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

【讨论】:

    【解决方案2】:

    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);
    

    【讨论】:

      【解决方案3】:

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

      using Steamworks;
      
      public class DemoClass : Monobehaviour {
      
          if(SteamUtils.IsOverlayEnabled()) {
              // pause...
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-23
        • 2016-01-09
        • 2015-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        相关资源
        最近更新 更多