반응형
선행
1. 스팀 앱 등록이 되어 있어야함
2. 스팀 초기화까지 완료된 상태
SDK 링크
- https://github.com/rlabrecque/Steamworks.NET/releases
Releases · rlabrecque/Steamworks.NET
Steamworks wrapper for Unity / C#. Contribute to rlabrecque/Steamworks.NET development by creating an account on GitHub.
github.com
스팀 윅스 도전과제 이동
- 대시보드 -> 원하는 게임 선택 -> 기술적 도구 -> Steamworks 설정 수정 -> 통계 및 도전 과제 -> 도전과제
새로운 도전과제 생성
- API 이름 : API 불러올때 사용(유저에게 표시 X)
- 표시 이름 : 도전과제 이름(달성 시 유저에게 표시O)
- 설명 : 유저에게 보여지는 설명
- 숨깁니까? : 달성 전 도전과제가 유저에게 노출될지 설정(달성 시 노출됨)
- 달성아이콘 : 달성 시 아이콘
- 미달성 아이콘 : 달성 전 아이콘
완료하고 난 후 변경사항 게시할 것
코드 작성
using System.Threading.Tasks;
using Cysharp.Threading.Tasks;
using Steamworks;
using UnityEngine;
public static class SteamQuestManager
{
public static async Task Steam_Quest_Active(string apiname)
{
if (!SteamManager.Initialized)
{
Debug.Log("SteamManager가 초기화되지 않음!");
return;
}
SteamUserStats.ClearAchievement("test"); // "test"를 원하는 도전과제 API 이름으로 변경
SteamUserStats.StoreStats();
Debug.Log("도전과제를 초기화했습니다!");
await UniTask.WaitForSeconds(0.25f);
// 현재 유저의 도전과제 상태 요청
if (!SteamUserStats.RequestCurrentStats())
{
Debug.Log("도전과제 상태 요청 실패!");
return;
}
Debug.Log("도전과제 상태 요청 성공!");
await UniTask.WaitForSeconds(0.25f);
// 도전과제 상태 가져오기
if (!SteamUserStats.GetAchievement(apiname, out bool isstate))
{
Debug.Log($"도전과제 {apiname} 정보를 가져오는 데 실패!");
return;
}
Debug.Log($"도전과제 {apiname} 상태 확인 완료, 현재 달성 여부: {isstate}");
// 이미 달성한 도전과제라면 리턴
if (isstate)
{
return;
}
await UniTask.WaitForSeconds(0.25f);
// 도전과제 달성
if (!SteamUserStats.SetAchievement(apiname))
{
Debug.Log("도전과제 달성 실패!");
return;
}
// 도전과제 저장
if (!SteamUserStats.StoreStats())
{
Debug.Log("도전과제 저장 실패!");
return;
}
Debug.Log("도전과제 저장 성공!");
}
}
결과
실패시
- SystemMessage.Create($"현재 Steam App ID: {SteamUtils.GetAppID()}"); 로 내가 설정한 ID가 맞는지 체크
- 도전과제를 apiname 제대로 넣었는지 체크
반응형
'기타 > Steam' 카테고리의 다른 글
[Steam] 브랜치 사용방법 (0) | 2025.04.11 |
---|---|
[Steam] 앱 출시 후 올리는 방법 (0) | 2025.04.09 |