web-dev-qa-db-ja.com

Unityゲームでデータを保存する最良の方法

私は思っていました... Unityゲームでデータを保存する最良の方法は何ですか。 JSON?もしそうなら、どうですか?ありがとう

8
messedupsongguy

短い質問 長い質問に!

Unityプロジェクトのデータを保存するためのさまざまな方法と方法の一部を以下に示します。

  1. プラットフォームに依存しない:プラットフォームに依存しない方法でUnity3Dにデータを保存する1つの方法は、-を使用することです PlayerPrefsクラス。 (詳細12)。

  2. 永続性-DontDestroyOnLoadPlayerPrefs、およびデータserializationを使用したデータの保存と読み込みnityによるビデオチュートリアル

  3. サーバー側:また、Serverを使用してデータ( PHPとMySQLデータベース)の組み合わせ。スコアデータ、ユーザープロファイルなどを保存するために使用できます。詳細はこちら nity Wiki

  4. ゲーム内データをハードドライブに保存し、後で理解してロードできる形式で保存するには、次のように知られている.NET/Mono機能を使用します。 シリアライゼーション詳細

  5. Unityに関するシンプルな[〜#〜] json [〜#〜]ガイドは nity Wiki または公式に見ることができます JSONシリアル化

  6. SQLiteアプリの埋め込みデータベース)は Free Package を取得するためのもう1つの優れたオプションです。 SQLを知っている。

25

アセットストアで無料および有料で利用できる多くのアセットを使用できます。

Save Game Free -XMLおよびJSONの保存と読み込み。

構文:

Saver.Save<T> (T data, string fileName);

例:

Saver.Save<MyData> (myData, "myData"); // The .json extension will be added automatically

Save Game Pro -バイナリの保存と読み込み。高速かつ安全。使いやすい。

構文:

SaveGame.Save<T> (T data, string identifier);

例:

SaveGame.Save<int> (score, "score");
4
Hasan Bayat

サーバーにデータを保存する場合は、PHPとMySQLを使用する簡単な方法があります。次の操作を行う必要があります。

ステップ1:
サーバーから必要なデータを1つの文字列で取得します(コードは以下)。

<?php

//SERVER CONNECTION 
$server_name = "localhost";
$server_user = "Er.Ellison";
$server_pass = "supersecretPassword";
$server_db   = "game_test_db";

$connection = new mysqli($server_name , $server_user , $server_pass , $server_db);
if(!$connection) {
  die("Connection failed !" . mysqli_connect_error());
}

// QUERY
$query = "SELECT * FROM items";
$result = mysqli_query($connection , $query);

if(mysqli_num_rows($result) > 0){
  while($row = mysqli_fetch_array($result)){
    echo "id:" . $row['id'] . "|username:" . $row['username'] . "|type:" . $row['type'] . "|score:" . $row['score'] . ";";
  }
} 
?>

また、必要な文字列は;で区切る必要があることに注意してください。または、それに慣れているものは何でも、UnityのC#で使用することを覚えておいてください。

ステップ2:
これで、次のようにWebからデータを取得できます(長い文字列になります):

enter image description here

ステップ3:
次に、Unityに移動してC#スクリプトを作成し、それをシーン内のオブジェクトにアタッチしてスクリプトを開き、次の種類のコードを使用して、データベースから取得したデータを操作します。

public class DataLoader : MonoBehaviour {


public string[] items;


// Use this for initialization
IEnumerator Start () {
    WWW itemsData = new WWW ("http://localhost/_game/test/itemsdata.php");  
    yield return itemsData;
    string itemsDataStrign = itemsData.text;
    print (itemsDataStrign);
    items = itemsDataStrign.Split (';');
    print (GetDataValue(items[0] , "cost:"));
}

string GetDataValue(string data, string index) {
    string value = data.Substring (data.IndexOf(index) + index.Length);
    if (value.Contains ("|")) {
        value = value.Remove (value.IndexOf("|"));
    }
    return value; 
}

}

ステップ4:
データベースからデータを取得しました。Unityコンソールから画像を確認してください:

enter image description here

私と同じように、データベースの問題で立ち往生している可能性がある人のためにこれを作成しました!

2
a_m_dev

同様の状況とデータを保存する簡単な方法については、以前の answer を参照してください。

1
kagkar