最近要做一个成就系统出来,研究了一个礼拜总算成功了,在这里把流程写出来以免日后还需要用到。
首先是安装steamwork,steamwork.net有详细的说明,嫌麻烦的可以直接看我这里:
- 在Github下载最新的版本:https://github.com/rlabrecque/Steamworks.NET
- 将所有内容导入Assets文件夹
- 启动Unity,编辑器会把steam_appid.txt这个文件拷贝到根目录
- 打开steam_appid.txt,把480改成你的AppID(480是Steam的示例工程ID,建议没做过的人先拿480来测试,成功了再移 植到自己的游戏项目里)
- 重启Unity,加载成功!
这个是官方的示例工程,其实我只是把官方的代码精练了一遍,剔除我不需要的部分,留下主干,这样便于快速理解。官方示例的下载地址是:https://github.com/rlabrecque/Steamworks.NET
下面就是官方案例,每一个按钮被点击时,当条件触发便达成成就。比如第一次点击“Set State to Winner”即解锁ACH_WIN_ONE_GAME,点击100次之后达成ACH_WIN_100_GAMES. 我把这些功能剔除掉,先以“一进入游戏便达成一个成就”为目的。好吧,我们一步步来实现。
实现成就系统你需要有的步骤是:
- 从Steam后端调出用户成就数据,再回调
- 迭代每项数据并初始化游戏状态
- 在游戏中显示成就
- 变更统计数值并上传
Steam后台会解锁以达成的成就,并弹小窗给玩家,类似这样:
这里要提示一句,拿示例工程做测试的朋友,不要改脚本里成就的ID! 它必须与Steam后台里被录入的API Name保持一致,不然你测试的时候成就是读取不到的。
下面是完整代码,我剔除了很多东西,别的功能你们可以自己加。