3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityでCloudSaveを使ってデータをクラウド保存してみよう!

3
Last updated at Posted at 2025-12-20

はじめに

2025 Life is Tech Advent Calendar Day19記事を担当させていただきます。Unityメンターの「ゆうゆ」です!
ゲームで進行中の内部通貨的なものやplayerNameなどをクラウド上で管理、保存したいと思ったことはありませんか?
今回UnityGameingServiceのCloudSaveの導入と、使ってみて簡易的なクラウド保存をしてみたいと思います!

UIなどがバージョンによって異なることがあります!

Unity GameingServiceとは?

UnityGameingService(通称UGS)はゲームの開発からリリース後の運用まで、様々なことを一つにまとめたサービスのことです!

例えばソシャゲなどであるユーザー認証やデータ保存など、またオンラインでのマッチング機能など様々なものができます。しかしもちろん無料で全ての機能が使えるわけではありません!有料な部分があったり従量課金制だったりします!

導入方法

UnityCloudに接続

まずはUnityのprojectを作成しましょう!その際に「Connect to Unity Cloud」にチェックを入れましょう。そうすることでUnityCloudにログインしてUGSのサービスを使用することができます。
スクリーンショット 2024-12-20 13.54.26 1.png

Cloud用のプロジェクトになっているか確認

UnityHubの画面で下の画像のようにproject名の横のアイコンが雲のアイコンのようになっていればOK!
もしなっていなければ、そのアイコンの部分を押して「Connect project to unitycloud」というのがあるので押せばOK!

次にUnityCloudにログインしましょう!

UnityCloudのプロジェクトのところに先ほど作成したプロジェクトがあるかどうか確認しましょう。
ショートカットの部分からCloudSaveを追加しましょう。
image.png

もしもUnityCloudのプロジェクトに作ったプロジェクトが無かったら、UnityProjectを作ったUnityアカウントと同じアカウントでログインしているか確認しましょう!

CloudSaveのセットアップ

初めて開くプロジェクトでを見るとSetUpGuidが表示されます。(親切ですね)
指示通りにSetUpしていきましょう。やることは2つです。
・IDの確認
・PackgeMangerからCloudSaveをimport
IDの確認はUnityCloud側でprojectの部分で自分の作成したプロジェクトをクリックするとIDが確認できます。Unity側ではProhjectSettingのServiceの部分で確認することができます。ここの二つが同じであれば大丈夫です!
スクリーンショット 2025-12-20 13.03.08.png

これで一旦準備完了!

まずは匿名ログインできるように

まず初めに色々usingで書いてその後に以下の二つを書けばログインできちゃいます!

await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();

例:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Unity.Services.Authentication;
using Unity.Services.CloudSave;
using Unity.Services.Core;
using UnityEngine;

public class CloudSaveSimple : MonoBehaviour
{
    async void Start()
    {
        await InitAndLoginAsync();
    }

    public static async Task InitAndLoginAsync()
    {
        try
        {
            await UnityServices.InitializeAsync();

            if (!AuthenticationService.Instance.IsSignedIn)
            {
                await AuthenticationService.Instance.SignInAnonymouslyAsync();
            }

        }
        catch (Exception e)
        {
            Debug.LogException(e);
        }
    }
}

データを保存してみよう!

データの保存も簡単です。保存するデータの名前(key)とその名前に入れるデータを入力するだけ!

var data = new Dictionary<string, object>{{ "keyName", "name" }}
await CloudSaveService.Instance.Data.Player.SaveAsync(data);

例:playerのレベルと持っているコインの枚数を保存

public static async Task SaveExampleAsync(int level, int coins)
{
    var data = new Dictionary<string, object>
    {
        { "level", level },
        { "coins", coins }
    };

    await CloudSaveService.Instance.Data.Player.SaveAsync(data);
}

Cloud Save が受け付ける value の型

OK
int
long
float
double
bool
string
Dictionary<string, object> ✅(ネスト)
List<object>

❌「Vector3」「Transform」「GameObject」などの型は直接保存することはできません!
保存したい場合は要素をひとつずつ保存していくか、構造体を作りそれらをJson形式にシリアライズして保存するなどしなくてはいけません...

データをロードしてみよう!

データのロードも簡単です。

var playerData = await CloudSaveService.Instance.Data.Player.LoadAsync(new HashSet<string>{"keyName"});
if (playerData.TryGetValue("keyName", out var keyName)) 
{
        Debug.Log($"keyName: {keyName.Value.GetAs<string>()}");
}

例:先ほど保存したものをロードしてみましょう

public static async Task LoadExampleAsync()
{
    var keys = new HashSet<string> { "level", "coins" };

    var playerData = await CloudSaveService.Instance.Data.Player.LoadAsync(keys);

    if (playerData.TryGetValue("level", out var levelItem))
        Debug.Log($"level={levelItem.Value.GetAs<int>()}");

    if (playerData.TryGetValue("coins", out var coinsItem))
        Debug.Log($"coins={coinsItem.Value.GetAs<int>()}");

}

以上!これでデータをCloudSave側に保存したデータをUnity側で確認することができました!

UnityCloudでのセーブデータの確認

ちゃんとデータがクラウド保存されているか確認してみましょう。まずはUnityCloudから自分のプロジェクト選択してショートカットから「Cloud Save」の「プレイヤーデータ」を見てみましょう。
スクリーンショット 2025-12-20 12.44.36.png

そうするとなんかぐちゃぐちゃ書いてあるPlayerIDがあると思うのでそこをクリック!
すると以下のように保存されているのが確認できると思います。
スクリーンショット 2025-12-20 12.45.15.png
(これは以前自分が「Capsule」「Cylinder」「Sphere」というkeyの名前でそれぞれのオブジェクトの座標を保存してみたいものです)

最後に

ここまで記事を読んでいただきありがとうございます。CloudSaveではUnityでCloud上に簡単にデータを保存し管理しておく事ができます。今回紹介させていただいたのはほんの一部で、まだまだ色々な事ができるようです。(まだ自分もためせてない...)また、CloudSaveに限らずUGSやUnityCloudでは様々な事ができるようです。
これらを使いこなせたら一気にゲーム実装の幅が広がり、新しいアイデアも生まれるかも!なんならゲーム開発以外にも使えるかも?!
ぜひ皆さんも一緒に使ってみてUnityでの開発を楽しんでいきましょう!😊

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?