我想做的事情
我们将实现Steam成就功能。
前提
这假设您已经获得了使用 SteamWorks 创建的应用的 App ID(显示应用的设置页面;商店页面无需发布)。
工作
安装 Steamworks.NET
请从以下页面下载 Steamworks.NET。撰写本文时,最新版本为 Release 2025.162.1。
要下载的文件是位于 Assets 文件夹中的 .unitypackage 文件。

从 Unity 编辑器菜单中,选择 Assets → Import Package → Custom Package… 。

将出现文件选择对话框,请选择下载的 .unitypackage 文件。
稍等片刻后,将出现导入文件选择对话框,单击“导入”。
以下两项将被添加到 Assets 文件夹中:

Steamworks.NET 采用 MIT 许可证。请注意最终用户许可协议 (EULA)。
Steamworks.NET-Example 与 Release 2025.162.1 不兼容。
(如果你修复它,它就能正常工作,但我认为你无需担心这个问题。)
AppID 设置
为了发展
创建一个名为 steam_appid.txt 的文本文件
文件应该只包含 AppID 并保存。
AppID 是下面显示的数字。

将创建的 steam_appid.txt 文件放置在 Unity 项目的根目录(包含 *.sln 文件的文件夹)中。
放置(或更新)steam_appid.txt后,重新启动编辑器。
如果您是在构建后而不是从编辑器中使用它,请将上述文件放在包含已构建的可执行文件的文件夹中。
产品
对于该产品,删除 steam_appid.txt 文件。
打开 Assets\Scripts\Steamworks.NET\SteamManager.cs。
将以下行中的AppId_t.Invalid替换为(AppId_t)AppID 。例如:(AppId_t)480
if (SteamAPI.RestartAppIfNecessary(AppId_t.Invalid)) {SteamWorks 设置
打开目标应用的页面,然后打开成就页面。

点击新成就即可设置。(首次创建时无法设置成就图标或未成就图标。请先保存,然后再进行设置。)
这里给出的例子不使用数值。
API名称:应用程序指定的ID。该ID必须唯一。
进度:设置为“无”
显示名称:向用户显示的成就名称。
描述:向用户显示的成就描述。
隐藏?:当目标未达成时是否向用户显示此信息。
添加完必要的成就后,转到“发布”选项卡,然后单击“准备发布” ,再单击“发布到 Steam” 。

执行
可以使用以下代码解锁此成就。请将 ACHIEVEMENT_ID 替换为您在 SteamWorks 中设置的 API 名称。
if (SteamManager.Initialized) {
SteamUserStats.SetAchievement("ACHIEVEMENT_ID");
SteamUserStats.StoreStats();
}至此,成就解锁机制的实现全部完成。
必须调用 SteamManager.Initialized 方法。
这有点令人困惑,但 SteamManager.Initialized 不仅仅检查初始化是否完成;它还会创建一个实例。
奖金
检查已启动应用的 App ID
检查您在 steam_appid.txt 或类似文件中设置的 AppID 是否正常工作。
右键点击 Steam 并启动控制台。

启动目标应用。
您应该可以通过查看下面的日志找到 AppID。
顺便一提,AppID 480 是一个测试 ID,所以它没有正确设置。
游戏进程已更新:AppID 480 C:\Program Files\Unity\Hub\Editor\2021.3.44f1\Editor\Unity.exe・・・・・
我用作参考的网站




コメント