JSON形式と解析 (2)

Unity での Json の使用



序文

Json に触れたのは初めてで、Json が何であるかを知らない初心者も多いかもしれません. インターネット上にはこの Json を説明する講義がたくさんあります. この記事ではここでは詳しく説明しません.自分でバイドゥ. 文法形式がわからない場合は、私のブログJson 形式と分析を参照できます.このブログでは、Json の文法形式とその主な使用法について説明しました. 参照できます. 今回はUnityにおけるJsonの使い方と解析を中心に、UnityにJsonを格納する方法と、格納されたJsonを読み込む方法を事例を交えながら解説します。
この記事は主にLitJsonを使用しており、LitJsonのダウンロード先はこちら


提示:以下是本篇文章正文内容,下面案例可供参考

1. Unity で最も一般的に使用される Json 形式は何ですか?

unityで最も一般的に使用されるJsonストレージの主な方法は2つあります.1つ目はLitJsonプラグインであり,2つ目はJsonUnilityです.このJsonUnilityはJsonストレージのフォーマットに基づいてUnityによって作成されたクラスです.これが使用されます.少量のデータ ストレージの場合、JsonUniility は依然として非常に便利です。LitJsonはビッグデータの処理に利用されることが多く、JsonUniilityよりもはるかに優れたパフォーマンスを発揮します.ただし、LitJsonは一部のUnityバージョンで漢字変換に失敗するというデメリットがあります.主な理由はLitJsonのエンコード方式がUniCodeであることです.正しい形式に変換する方法も教えます。

2.LitJson を Unity にインポートする

1. 上記の序文の LitJson ダウンロード アドレスに従って、最初に LitJson をダウンロードします。

1——LitJson のダウンロードが完了したら、ダウンロードしたファイルを開きます.ファイルには 1 つのファイルしかありません.dll ファイルは Plugins フォルダに配置する必要があり、LitJson を使用してコードにアクセスするときに名前空間を参照する必要があります. この時点で、Unity インターフェースを開き、Assets ファイルの下に新しいフォルダーを作成して Plugins という名前を付けてから、ダウンロードしたフォルダーに戻り、このフォルダーに直接ドラッグする必要があります。次に、私たちはそれをどのように使用するかを説明します。

2.LitJson はデータを保存します

1——まず、一般名、年齢、住所、その他のデータを含むデータを個別に保存する新しいクラスを作成します。

コードは次のとおりです (例)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[SerializeField]
public class StudentClass 
{
    
    
    public string _name;
    public string _address;
    public int _age;
}

上記の情報については、この情報を表す別のクラスが作成されているため、MonoBehaviour を継承する必要はなく、Start 関数と Update 関数は使用しません。このクラスを編集可能なパラメーターにするには、このクラスに [SerializeField] を追加する必要があります。

2 - Unityでは、これらのパラメーターの値をまとめて受け取るために、いくつかのInputFieldを設定します

ここに画像の説明を挿入

この情報は、私のように設定できます。主に、InputField に情報を入力し、クリックして情報を送信し、ストレージを実現します。クリックして情報を読むと、上のテキスト ボックスに保存した情報を表示できます。主な考え方はこんな感じで、自分のアイデアで設定することもできます. 最も重要なことは、私のようにプロセスを保存することです.
もちろん、以下に示すように、UsingLitjson スクリプトでこれらの InputField 変数を設定し、このスクリプトを新しく作成した空のオブジェクト オブジェクト GameManger に掛けて、作成したばかりの InputField をドラッグ アンド ドロップする必要もあります。
ここに画像の説明を挿入

このようにして、ストアドプロシージャを開始できます

3——LitJson ストレージメソッドを書き始めましょう

まず、UsingLitJson という名前の新しいクラスを作成する必要があります.このクラスでは、LitJson 名前空間 Using LitJson を参照し、UI 名前空間も導入する必要があります.コードは次のとおりです.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using LitJson;

public class UsingLitJson : MonoBehaviour
{
    
    
    public StudentClass studentClass;
    public InputField inputFieldName;
    public InputField inputFieldAge;
    public InputField inputFieldAddress;
    public Text readMassagetext;
    private JsonData jsonData;

    /// <summary>
    /// 给提交按钮添加事件
    /// </summary>
	public void UsingJson()
    {
    
    
        studentClass = new StudentClass();
        studentClass._name = inputFieldName.text;
        studentClass._age = int.Parse(inputFieldAge.text);
        studentClass._address = inputFieldAddress.text;
        jsonData = JsonMapper.ToJson(studentClass);
       Debug.Log(jsonData);
    }
    /// <summary>
    /// 给读取按钮添加事件
    /// </summary>
    public void ReadJson()
    {
    
    
        readMassagetext.text = jsonData.ToString();
    }
}

4 - 送信ボタンにイベントを追加する

ここに画像の説明を挿入

5 - 読み取りボタンにイベントを追加する

ここに画像の説明を挿入

6——実行して効果を確認する

最初に情報を入力し、送信ボタンをクリックして、保存された情報が正しいかどうかを確認します.
ここに画像の説明を挿入
ここから、情報は正しく保存されていますが、中国語が正しく変換されていないことがわかります.
読み込んだ情報をもう一度見てみましょうが、
ここに画像の説明を挿入
こちらも正しく読み込めています。次に、この中国語のトランスコーディングを設定する方法を見てみましょう

7——中国語変換フォーマット

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using LitJson;
using System;

public class UsingLitJson : MonoBehaviour
{
    
    
    public StudentClass studentClass;
    public InputField inputFieldName;
    public InputField inputFieldAge;
    public InputField inputFieldAddress;
    public Text readMassagetext;
    private JsonData jsonData;

    /// <summary>
    /// 给提交按钮添加事件
    /// </summary>
	public void UsingJson()
    {
    
    
        studentClass = new StudentClass();
        studentClass._name = inputFieldName.text;
        studentClass._age = int.Parse(inputFieldAge.text);
        studentClass._address = inputFieldAddress.text;
        jsonData = JsonMapper.ToJson(studentClass);

        string listJson = jsonData.ToString();
        System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(?i)\\[uU]([0-9a-f]{4})");//正则表达式规定格式
        var ss = reg.Replace(listJson,
        delegate (System.Text.RegularExpressions.Match m)
        {
    
    
            return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString();
        });
        Debug.Log(ss);
        
    }
    /// <summary>
    /// 给读取按钮添加事件
    /// </summary>
    public void ReadJson()
    {
    
    
        readMassagetext.text = jsonData.ToString();
    }
}

このコードを元に追加すると、中国語を直接変換できます。

string listJson = jsonData.ToString();
        System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(?i)\\[uU]([0-9a-f]{4})");//正则表达式规定格式
        var ss = reg.Replace(listJson,
        delegate (System.Text.RegularExpressions.Match m)
        {
    
    
            return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString();
        });

要約する

提示:这里对文章进行总结:

この記事では主に、LitJson に情報を格納するプロセスについて簡単に説明しますが、同時に、この情報をファイルに直接書き込むこともでき、その他の操作もすべて実現可能です。次号では、ファイルに保存して保存する方法と、ファイル内の情報を読み取る方法について説明します。

おすすめ

転載: blog.csdn.net/m0_45244541/article/details/123939101