AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

ユニークIDの保存

サーバーに配置データを保存するにあたり、ユーザーを区別するためにユニークIDを発行しなければならない。
また、ユニークIDはローカルに保存しておいて、アプリを起動するたびに同じIDが読み込まれるようにする必要がある。



データをセーブするには、以前の記事に書いたSaveData.csを使う。

yasu9780.hatenablog.com



セーブデータは以下のような構造とする。

    class Player
    {
        public string uuid;
        public int mode;
        public Vector3[] pos;
        public int[] type;
        public Player()
        {
            uuid = "";
            mode = 0;
            pos = new Vector3[100*3];
            type = new int[100 * 3];
            for (int i = 0; i < 100 * 3; i++) type[i] = -1;
        }
    }
    Player player;

ユニークIDはuuidに保存されている。


起動時に、以下のような処理を入れる

   void Start () {

        player = SaveData.GetClass<Player>("p1", new Player());
        if(player.uuid=="")
        {
            System.Guid guid = System.Guid.NewGuid();
            player.uuid = guid.ToString();

            SaveData.SetClass<Player>("p1", player);
            SaveData.Save();
        }
        Debug.Log("uuid=" + player.uuid);

p1というキーで保存されているデータを読み込む。
初回はデータが無いので、new Player()の結果が返ってくる。
コンストラクターがuuidに""に代入しているので、初回はuuidが空として、uuid発行処理が走る。UUIDを発行したので、p1をキーとしてplayerをセーブする。

一度アプリを終了させ、次回の起動では、SaveData.GetClassの読み込みでuuidが入っているので、uuid発行処理は今度は走らない。

これで、初回時はuuid発行。以後は同じuuidが起動時にセットされるという処理ができた。