【Unity】对接Steam


一、接入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自动将本地云存档上传至云存档。

参考文章

  • 12
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值