【Unity】对接Steam
文章目录一、接入Steamworks SDK1.1 下载1.2 解压1.3 设置Steamworks1.3.1 增加Depot1.3.1 关联Depot1.4 修改配置文件1.5 使用SteamPipeGUI上传游戏1.5.1解压SteamPipeGUI1.5.2配置SteamPipeGUI1.6 发布版本二、接入Steamworks.NET2.1 下载2.2 修改配置信息一、接入Steamwor
文章目录
一、接入Steamworks SDK
1.1 下载
步骤1:搜索Steamworks或点击Steamworks链接
步骤2:选择文献库
步骤3:选择Steamworks SDK
步骤4:点击此处下载最新SDK
1.2 解压
将下载下来的SDK压缩包解压,并将Unity打包的游戏文件复制到解压路径\steamworks_sdk_153a\sdk\tools\ContentBuilder\content下。
注意:
路径中不能有空格或中文。
本文SteamWorksSDK版本为153a。
1.3 设置Steamworks
1.3.1 增加Depot
步骤1:
步骤2:
步骤3:
1.3.1 关联Depot
步骤1:新增Depot后,按下图所示操作,点击自己的游戏 。
步骤2:找到下图所示内容,并点击
步骤3:找到下图所示内容,并点击
步骤4:添加之前新建的Depot至此
步骤5:回到步骤3页面,按照步骤3、步骤4操作,关联此处两个程序包
1.4 修改配置文件
路径:1.2解压到的地方\steamworks_sdk_153a\sdk\tools\ContentBuilder\scripts
该路径下有四个文件,无特殊需求下只需修改两个文件。
步骤1:
将第一个文件的文件名中的数字改为自己游戏对应的AppID。
将第二个文件的文件名中的数字改为1.3中设置的DepotID。
步骤2:打开第一个文件进行修改。
步骤3:打开第二个文件进行修改。
1.5 使用SteamPipeGUI上传游戏
1.5.1解压SteamPipeGUI
路径:1.2解压到的地方\steamworks_sdk_153a\sdk\tools下找到SteamPipeGUI.zip文件,将该文件解压到当前文件夹。
打开SteamPipeGUI.exe文件
1.5.2配置SteamPipeGUI
注意:
第一次上传需要验证。
1.6 发布版本
步骤1:打开Steamworks后,操作如下图
步骤2:选择安装-通用安装后,操作如下图。Unity打包的所有文件,指之前移动到1.2解压到的地方\steamworks_sdk_153a\sdk\tools\ContentBuilder\content路径下的游戏文件。
步骤3:选择生成版本,并将新上传的版本分支设置为对应分支,并点击预览更改
步骤4:点击 立即将生成版本设置上线,则新版本成功发布。
步骤5:重启Steam,完成游戏更新。
二、接入Steamworks.NET
2.1 下载
步骤1:搜索Steamworks.NET或点击Steamworks.NET链接
步骤2:点击下图,红框位置
步骤3:点击下图,红框位置
步骤4:选择下载Unity最低支持版本,包含当前使用Unity版本的Steamworks.NET.unitypackage。并将该包导入到Unity中。
2.2 修改配置文件
步骤1:在Unity项目中找到steam_appid文件并打开,将内容修改为自己的AppId。
步骤2:
如下图所示,搜索SteamManager.cs文件,并打开。
在SteamManager.cs文件中,找到下图代码并修改为自己的AppId。
步骤3:
新建GameObject,并将SteamManager.cs挂载到空物体上,点击运行。Steam中对应游戏显示正在运行,Steamworks.NET即为正确接入。
注意:Unity运行后,Steam中对应游戏显示正在运行。如需停止运行,需重启Unity或Steam。
2.3 成就
2.3.1 Steamworks添加成就
步骤1:登录Steamworks,选择统计与成就。
步骤2:点击统计与成就-成就本地化,勾选成就想要显示的语言类型并保存。
步骤3:点击统计与成就-成就,设置各语言版本游戏成就内容。
步骤4:完成成就录入后,点击发布->准备发行->发布到Steam->完成发行
注意:
点击完成发行后,Steam需重启,才会更新修改内容。
2.3.2 代码逻辑
思路:将SteamManager修改为单例模式,在游戏中达成成就的地方调用。
步骤1:增加命名空间,用于获取AchievementType中的名称
using System;
步骤2:增加枚举AchievementType。枚举中键名与2.3.1中增加的成就API名称保持一致,数量与2.3.1中增加的成就数量保持一致。
public enum AchievementType
{
Achievement1,
Achievement2,
Achievement3
}
步骤3:将SteamManager修改为单例模式
protected static SteamManager s_instance;
public static SteamManager Instance {
get {
if (s_instance == null) {
return new GameObject("SteamManager").AddComponent<SteamManager>();
}
else {
return s_instance;
}
}
}
步骤4:增加达成成就方法,调用SteamManager.Instance.Reach_achievement(Achievement_type.Achievement1);
public void Reach_Achievement(AchievementType ach_type)
{
Complete_Achievement(ach_type.ToString());
}
private void Complete_Achievement(string achievementName)
{
if (!SteamManager.Initialized)
{
return;
}
else
{
if (SteamUserStats.SetAchievement(achievementName))
SteamUserStats.StoreStats();
}
}
步骤5:增加清除成就方法,调用SteamManager.Instance.Remove_achievement(Achievement_type.Achievement1);
public void Remove_Achievement(AchievementType ach_type)
{
Clear_Archievement(ach_type.ToString());
}
private void Clear_Archievement(string achievementName)
{
if (!SteamManager.Initialized)
{
return;
}
else
{
if (SteamUserStats.ClearAchievement(achievementName))
SteamUserStats.StoreStats();
}
}
步骤6:增加清除所有成就方法,调用SteamManager.Instance.Clear_AllArchievements();
public void Clear_AllArchievements()
{
if (!SteamManager.Initialized)
{
return;
}
else
{
foreach (var achievementName in Enum.GetNames(typeof(AchievementType)))
{
if (SteamUserStats.ClearAchievement(achievementName))
SteamUserStats.StoreStats();
}
}
}
三、接入Steam云存档(Auto-Cloud)
3.1 设置Steamworks
步骤1:设置单用户配额
步骤2:设置上传存档路径
步骤3:保存并发布
步骤4:重启Steam,对应游戏显示云存档图标
3.2 代码思路
步骤1:使用Steam启动游戏,自动下载云存档至本地云存档。
步骤2:开始游戏后,判断 本地存档和本地云存档 版本号是否一致。
1)版本号,本地存档>本地云存档。使用本地云存档覆盖本地存档,并迭代更新到最新版。
2)版本号,本地存档=本地云存档。使用本地云存档覆盖本地存档。
3)版本号,本地存档<本地云存档。使用本地存档,不使用本地云存档。
步骤3:保存游戏时,用本地存档覆盖本地云存档。
步骤4:关闭游戏,Steam自动将本地云存档上传至云存档。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)