前提・実現したいこと
現在自作ゲーム内にSteam実績を実装していますが、
ゲーム内から特定の条件を達成しているのか確認する際に
Steam実績を持っているかどうかで判断すればいいんじゃないかと思いました。
しかし、Steam実績を既に持っているかを確認するAPIがわかりません
実績を獲得するところまではうまくできました。
詳しい方、教えてもらえると嬉しいです。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Steamworks; 5 6public class Guntama : MonoBehaviour 7{ 8 9 public GameObject teki3; 10 11 public string playerName; 12 public bool kaizyo = false; 13 14 15 16 17 void Start() 18 { 19 if (SteamManager.Initialized) 20 { 21 playerName = SteamFriends.GetPersonaName(); 22 SteamUserStats.ResetAllStats(true); 23 } 24 } 25 26 27 28 public void OnTriggerEnter(Collider col) 29 { 30 if (col.tag == "teki3" & teki3 != null) 31 { 32 kaizyo = SteamUserStats.GetAchievement("ACHIEVEMENT_yuuyake", out kaizyo); 33 Debug.Log("今の実績は" + kaizyo); 34 } 35 36 37 if (col.tag == "Untagged") 38 { 39 this.GetComponent<SphereCollider>().enabled = false; 40 Debug.Log("違う"); 41 } 42 43 } 44}
ちなみに以下のところをコメントアウトすると普通にFalseになります // kaizyo = SteamUserStats.GetAchievement("ACHIEVEMENT_newGun", out kaizyo);
悩んでること
kaizyoは常にTrueになります
実績を獲得していないのにです
補足情報(FW/ツールのバージョンなど)
Unity2018
Visual Studio 2015
GetPlayerAchievementsで判断できると思うのですが。
> 実績を取るコマンドでは判定できませんでした...
どう実装してみたのか、どういう結果を望んでいて、実際はどういう結果だったのか等々詳しく書いてください。
そうなんですね!
実際は実績がもう一回呼び出されるだけでした...
if(GetPlayerAchievements == true){
処理
}
でもできませんでした。
おそらく、GetPlayerAchievementsはWebAPIなのだと思います。
できませんでした...
https://teratail.com/help/question-tips こちらを参考に、もう少し具体的に質問文を編集してください。
「できませんでした」とは「エラーが出る」なのか「エラーは出ないがそのif文に入らない(つまりGetPlayerAchievementsは常にfalseである)」なのか「if文には入るがその後の処理が実行されない」なのかによって話が変わります。
Debug.Logを仕込む等して「少なくともこの部分が問題である」ぐらいの特定はされていると解決しやすいです。こちらも参考に→ http://tsubakit1.hateblo.jp/entry/2015/12/02/212958
ぱっと見ではSteamのSDKの導入すら出来ていないか、根本的な使い方を理解していないのではと思いますので、調べたこと・試したこと(自分でやったこと)も記載するといいかと思います。
エラーは出ませんが達成していない実績でも常にtrueになってしまいます
実績を取得するところまでは問題なくできます
回答2件
あなたの回答
tips
プレビュー