Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

UnityでAndroidの内部ストレージにファイルを保存する

コード

using System.IO;

    public static DirectoryInfo SafeCreateDirectory(string path)
    {
        //ディレクトリが存在しているかの確認 なければ生成
        if (Directory.Exists(path))
        {
            return null;
        }
        return Directory.CreateDirectory(path);
    }

    public void Score_Save(string Directory_path,string date)
    {
        //データの保存
        SafeCreateDirectory(Application.persistentDataPath + "/" + Directory_path);
        string json = JsonUtility.ToJson(date);
        Writer = new StreamWriter(Application.persistentDataPath + "/" + Directory_path + "/date.json");
        Writer.Write(json);
        Writer.Flush();
        Writer.Close();
    }

    public Score Score_Load(string Directory_path)
    {
        //データの取得
        var reader = new StreamReader(Application.persistentDataPath + "/" + Directory_path  + "/date.json");
        string json = reader.ReadToEnd();
        reader.Close();
        return json;//使いやすいように変換してください
    }

はじめに

そもそも論としてAndroidには他のアプリと共有できる共有ストレージやそのアプリケーションのみで使用できる内部ストレージなどがある

種類 内容
アプリ固有のストレージ アプリ専用のファイルを、内部ストレージ ボリューム内の専用ディレクトリ、または外部ストレージ内の別の専用ディレクトリに保存します。他のアプリがアクセスできない機密情報の保存には、内部ストレージ内のディレクトリを使用します。
共有ストレージ メディアやドキュメントなど、アプリが他のアプリと共有するファイルを保存します。
設定 非公開のプリミティブ データを Key-Value ペアで保存します。
データベース Room 永続ライブラリを使用して、構造化データを非公開のデータベースに保存します。

・データ ストレージとファイル ストレージの概要

getFilesDir() または getCacheDir()にUnity上でアクセスできれば保存できるっぽい

Unityだと

Application.persistentDataPathをつかえばいい感じにアプリ固有ストレージのパスの取得ができるらしい
ちなみにiosやwindwosの内部ストレージにもこれでいける

ちなみにApplicationでアプリケーション系の処理ができるので気になったら読んでみてもいいと思う

Application.persistentDataPath

結局Application.persistentDataPathは何なの?

A.内部ストレージのパスを返してくれる関数

using System.IO;

StreamWriter Writer = new StreamWriter(Application.persistentDataPath + "任意のファイルパス");
Writer.Write("任意のデータ");
Writer.Flush();
Writer.Close();

で保存ができる

using System.IO;

var reader = new StreamReader(Application.persistentDataPath + "任意のファイルパス");
string string = reader.ReadToEnd();

読み取りはこっち

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?