【发布时间】:2019-10-21 12:00:34
【问题描述】:
我正在为 Steam 平台使用 Unity 开发游戏。我想知道调用 Steam Overlay 时如何暂停游戏。我尝试了几件事,但没有任何效果。
【问题讨论】:
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
-
这是一个寻求一般方法的好问题。
我正在为 Steam 平台使用 Unity 开发游戏。我想知道调用 Steam Overlay 时如何暂停游戏。我尝试了几件事,但没有任何效果。
【问题讨论】:
Steamworks API 在ISteamUtils 接口中有一个名为IsOverlayEnabled 的函数,您可以调用该函数来检查 Steam 叠加层当前是否处于活动状态。通过定期检查此功能,您可以在必要时调出暂停屏幕。
IsOverlayEnabled
bool IsOverlayEnabled();检查 Steam Overlay 是否正在运行以及用户是否可以访问它。
覆盖过程可能需要几秒钟才能启动并挂起游戏 过程,所以这个函数最初会返回 false 而 覆盖正在加载。
返回: bool
https://partner.steamgames.com/doc/api/ISteamUtils#IsOverlayEnabled
【讨论】:
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);
【讨论】:
Steam bool isOverlayEnabled() 函数的基本用法。请注意,首先需要将 Steamworks.Net 包下载并安装到您的 Unity 项目中。未经测试,但可能不需要继承 Monobehavior...
using Steamworks;
public class DemoClass : Monobehaviour {
if(SteamUtils.IsOverlayEnabled()) {
// pause...
}
}
【讨论】: