- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在学习 this 的教程视频。
教程源代码可以在here找到...
我有一个问题,我的 Json 数据都存储在 1 行中,
我希望数据在单个对象数据中换行
这里是 Json 教程的代码
Actor 文件
using UnityEngine;
using System.Collections;
using System;
public class Actor : MonoBehaviour {
public ActorData data = new ActorData();
public string name = "Tile";
string newline = "\n";
public void StoreData()
{
data.name = name;
data.pos = transform.position;
}
public void LoadData()
{
name = data.name;
transform.position = data.pos;
}
public void ApplyData()
{
SaveData.AddActorData(data);
}
void OnEnable()
{
SaveData.OnLoaded += LoadData;
SaveData.OnBeforeSave += StoreData;
SaveData.OnBeforeSave += ApplyData;
}
void OnDisable()
{
SaveData.OnLoaded -= LoadData;
SaveData.OnBeforeSave -= StoreData;
SaveData.OnBeforeSave -= ApplyData;
}
}
[Serializable]
public class ActorData
{
public string name;
public Vector2 pos;
}
保存数据文件
using UnityEngine;
using System.Collections;
using System.Xml.Serialization;
using System.IO;
public class SaveData
{
public static ActorContainer actorContainer = new ActorContainer();
public delegate void SerializeAction();
public static event SerializeAction OnLoaded;
public static event SerializeAction OnBeforeSave;
public static void Load(string path)
{
actorContainer = LoadActors(path);
foreach (ActorData data in actorContainer.actors)
{
GameController.CreateActor(data, GameController.playerPath,
data.pos, Quaternion.identity);
}
OnLoaded();
ClearActorList();
}
public static void Save(string path, ActorContainer actors)
{
OnBeforeSave();
//ClearSave(path);
SaveActors(path, actors);
ClearActorList();
}
public static void AddActorData(ActorData data)
{
actorContainer.actors.Add(data);
}
public static void ClearActorList()
{
actorContainer.actors.Clear();
}
private static ActorContainer LoadActors(string path)
{
string json = File.ReadAllText(path);
return JsonUtility.FromJson<ActorContainer>(json);
}
private static void SaveActors(string path, ActorContainer actors)
{
string json = JsonUtility.ToJson(actors);
StreamWriter sw = File.CreateText(path);
sw.Close();
File.WriteAllText(path, json);
}
}
最佳答案
JsonUtility.ToJson
有两个重载功能:
public static string ToJson(object obj);
public static string ToJson(object obj, bool prettyPrint);
使用第二个并将 true
传递给它。它将格式化输出以提高可读性,使 json 分隔成行。
只需将 string json = JsonUtility.ToJson(actors);
替换为 string json = JsonUtility.ToJson(actors, true);
如果您对结果不满意,请使用 Newtonsoft.Json对于 Unity 并像这样格式化 json:
string json = JsonConvert.SerializeObject(actors);
string newLineJson = JValue.Parse(json).ToString(Formatting.Indented);
关于c# - JsonUtility 如何将 json 换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48617417/
这个问题在这里已经有了答案: Serialize and Deserialize Json and Json Array in Unity (9 个回答) 关闭 5 年前。 这是我用于测试目的的 J
所以我一直在寻找将我的 Json 数组转换为 Unity 中的对象数组的方法。我从一个 2 年前的旧线程中找到了我的解决方案,但没有解释,但我很好奇它是如何工作的。 如果我使用 Visual Stud
这是我的 JSON: {"data":[{"id":1,"layoutLabel":"Sameer Non Custom","orbNumber":"["0","1","2","3"]"}, {"id
我想反序列化包含关卡信息的 json 文件。给定这个名为 1.json 的示例 .json 文件 { "name": "Level One", "map": [ [{ "g
我一直在学习 this 的教程视频。 教程源代码可以在here找到... 我有一个问题,我的 Json 数据都存储在 1 行中, 我希望数据在单个对象数据中换行 这里是 Json 教程的代码 Acto
我有一些数据需要序列化/反序列化,但 JsonUtility 只是没有做它应该做的事情。这是我正在使用的对象: public class SpriteData { public string
这个问题在这里已经有了答案: Serialize and Deserialize Json and Json Array in Unity (9 个回答) 关闭 5 年前。 我在将 json 字符串
我有以下类,它是可序列化的,并且只有字符串作为字段: using UnityEngine; using System.Collections; using System.Collections.Gen
我从 Servlet 获得了一个 JSON 字符串,我想使用 JavaScript 覆盖类型解析这个字符串。 我的整个编码都基于您发布的示例 google我的目标是将 JSON 字符串加载到 Arti
我正在使用 RequestBuilder 读取静态 JSON 文件,并确认我在响应的 .getText() 方法中看到了预期的 JSON。我已经精简了我正在做的事情来尝试找出确切的问题。这就是我能做的
我试图了解如何使用 JSONutil 在 jquery 和 Coldfusion 之间序列化/反序列化 JSON。我无法使用 Coldfusion 7,因此无法在 cfc 中使用 returnform
模型 using System.Collections.Generic; using UnityEngine; [System.Serializable] public class GetPeople
这是我在 Unity 中发出的请求: UnityWebRequest request = UnityWebRequest.Put(baseUrl + "miniGame1s/", JsonUtilit
我是一名优秀的程序员,十分优秀!