c# - 如何从 Json 加载游戏对象?有可能吗?
问题描述
我正在尝试保存对象的位置、旋转和缩放。除此之外,我可以将 Gameobject 本身保存在 json 中。我将 JSON 文件保存在 Application.persistentDataPath 中。下面是我的数据处理程序类
using System;
using UnityEngine;
[Serializable]
public class DataHandlers
{
public Vector3 localposinmap;
public Quaternion localrotinmap;
public Vector3 sizeofobj;
public GameObject gameobj;
public DataHandlers(Vector3 localpos, Quaternion localrot, Vector3 objsize,GameObject gobj)
{
this.localposinmap = localpos;
this.localrotinmap = localrot;
this.sizeofobj = objsize;
this.gameobj = gobj;
}
}
保存文件后,我的 JSON 字符串如下
{
"SaveValues": [
{
"localposinmap": {
"x": 0.0237075537443161,
"y": -0.27374106645584106,
"z": -0.6681503057479858
},
"localrotinmap": {
"x": 0,
"y": -0.08031735569238663,
"z": 0,
"w": -0.996769368648529
},
"sizeofobj": {
"x": 1,
"y": 1,
"z": 1
},
"gameobj": {
"m_FileID": -112,
"m_PathID": 0
}
},
{
"localposinmap": {
"x": 0.09054452180862427,
"y": -0.273919016122818,
"z": -0.5062751770019531
},
"localrotinmap": {
"x": 0.0001220703125,
"y": 0.06480370461940765,
"z": 0,
"w": -0.9978980422019958
},
"sizeofobj": {
"x": 1,
"y": 1,
"z": 1
},
"gameobj": {
"m_FileID": -456,
"m_PathID": 0
}
}
]
}
阅读 gameobj: "m_FileID":-456 和 "m_PathID":0 后,我可以读回这个值并使用上述详细信息实例化相同的 Gameobject 吗?
解决方案
您可以使用JsonUtility.ToJson
将对象更改为 json 字符串并将JsonUtility.FromJson
其取回。查看Unity 文档以获取更多信息。记住:
仅支持普通的类和结构;不是从 UnityEngine.Object 派生的类(例如 MonoBehaviour 或 ScriptableObject)。
推荐阅读
- ios - 在 xcode/swift 中使用位置管理器来获取用户的当前位置时,我得到的值为 nil。有什么建议么?
- model-view-controller - MVC 设计模式和计时器
- aframe - 动态创建的 A-FRAME 内容设置为嵌入将不会显示 A-FRAME 检查器
- c# - 沿正弦运动的矢量移动对象
- powershell - 在txt文件上使用foreach的方法是什么?
- amazon-cognito - AWS Amplify with Amazon Cognito 不记得带有托管 UI 的设备
- java - IBM MQRC_CONNECTION_BROKEN 推荐实践
- powerbi - 如何不使用空白值在矩阵中显示小计
- c - 防止调用函数打印输出
- r - 如何使用来自另一个矩阵的非 NA 值以及它们所在的行和列创建一个新矩阵?