unity 成员相同的两个类相互序列化
时间: 2023-09-16 13:08:50 浏览: 85
在 Unity 中,成员相同的两个类相互序列化可以使用以下代码:
```
using UnityEngine;
using System;
[Serializable]
public class Class1
{
public int variable1;
public float variable2;
public string variable3;
public Class1(int v1, float v2, string v3)
{
variable1 = v1;
variable2 = v2;
variable3 = v3;
}
}
[Serializable]
public class Class2
{
public int variable1;
public float variable2;
public string variable3;
public Class2(int v1, float v2, string v3)
{
variable1 = v1;
variable2 = v2;
variable3 = v3;
}
}
public class SerializationExample : MonoBehaviour
{
public Class1 class1Object;
public Class2 class2Object;
public void SerializeClasses()
{
string class1Json = JsonUtility.ToJson(class1Object);
string class2Json = JsonUtility.ToJson(class2Object);
class1Object = JsonUtility.FromJson<Class1>(class2Json);
class2Object = JsonUtility.FromJson<Class2>(class1Json);
}
}
```
在上述代码中,我们定义了两个成员相同的类 Class1 和 Class2,它们都有三个公共变量 variable1、variable2 和 variable3。在 SerializationExample 类中,我们定义了两个公共变量 class1Object 和 class2Object,分别代表 Class1 和 Class2 的实例。在 SerializeClasses() 方法中,我们使用 JsonUtility.ToJson() 方法将 class1Object 和 class2Object 序列化为 JSON 格式的字符串,然后使用 JsonUtility.FromJson() 方法将 class2Object 的 JSON 字符串反序列化为 Class1 的实例,将 class1Object 的 JSON 字符串反序列化为 Class2 的实例,从而实现了成员相同的两个类的相互序列化。
你可以将此脚本添加到场景中的一个空 GameObject 上,然后将 class1Object 和 class2Object 变量分别指向需要序列化的两个类的实例即可。
阅读全文