NaninovelでSteam実績を実装した

ゲーム開発 |

とても簡単にできた。主に以下の3工程になる。

Steamworksで実績を定義する。

あらかじめどんな実績を設定するか決めておき、Steamworksで定義する。表示名やアイコンは後回しでいいとして、API名だけでも設定しておく。API名は実績を呼び出す時に使う名前。

Steamworks.NETをUnityにインポートする。

↓から.unitypackageをダウンロードし、自分のUnityプロジェクトにインポート。

https://github.com/rlabrecque/Steamworks.NET/releases

Steamworks.NETのインポートからC#の書き方を参考にしたブログ

http://ktstg.blog.shinobi.jp/Entry/1012/

実績を解除するためのNaninovelのカスタムコマンドを作る。

Naninovelではカスタムコマンドという機能を使うことで、ゲームスクリプトの中で自由にC#を実行できる。

プロジェクトの任意の場所に新しいC#スクリプトを追加。名前をAchievement.csにした。

以下を宣言。

using Steamworks;
using Naninovel;
using Naninovel.Commands;

[CommandAlias(“achievement”)]と設定することで、@achievement というコマンドをNaninovelスクリプトの中で扱えるようになる。

さらにpublic StringParameter name;で、nameというパラメーターを引数として使えるようにする。

[CommandAlias("achievement")]
public class Achievement : Command
{
    public StringParameter name;

    public override UniTask ExecuteAsync (AsyncToken asyncToken = default)
    {
            if (SteamManager.Initialized)
            {
                if (Assigned(name))
                {

                    SteamUserStats.SetAchievement(name);//実績解除
                    SteamUserStats.StoreStats();//これも必要

                }
            }

        return UniTask.CompletedTask;
    }
}

これにより、Naninovelスクリプトの中の好きな場所(たとえばエンディングを迎えたタイミング)で

@achievement name:実績のAPI名

を書くことで実績を解除できる。


この記事もおすすめ

執筆者

Kanrinin

ゲームの翻訳を承っています。お気軽にご相談ください。

お問い合わせ

[wpforms id="12" title="false" description="false"]