using System;
using System.Collections.Generic;
using System.Xml.Serialization;
[Serializable]
public class TestSerilize
   [XmlAttribute("Id")]
   public int Id { get; set;}
   [XmlAttribute("Name")]
   public string Name { get; set;}
   [XmlElement("List")]
   public List<int> List { get; set;}
  1. 对Xml和对象进行操作
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Xml.Serialization;
using UnityEngine;
public class ResoucesTest : MonoBehaviour
    // Start is called before the first frame update
    void Start()
        // SerilizeTest();
        BinarySerTest();
    #region Xml
    private void SerilizeTest()
        TestSerilize testSerilize = new TestSerilize();
        testSerilize.Id = 1;
        testSerilize.Name = "ceshi";
        testSerilize.List = new List<int>();
        testSerilize.List.Add(1);
        testSerilize.List.Add(2);
        testSerilize.List.Add(3);
        XmlSerilize(testSerilize);
    /// <summary>
    /// 类对象系列化成Xml
    /// </summary>
    /// <param name="testSerilize"></param>
    private void XmlSerilize(TestSerilize testSerilize)
        FileStream fileStream = new FileStream(Application.dataPath + "/test.xml", FileMode.Create,
            FileAccess.ReadWrite, FileShare.ReadWrite);
        StreamWriter sw = new StreamWriter(fileStream, Encoding.UTF8);
        XmlSerializer xml = new XmlSerializer(testSerilize.GetType());
        xml.Serialize(sw, testSerilize);
        sw.Close();
        fileStream.Close();
    /// <summary>
    /// Xml反序列化成类对象
    /// </summary>
    /// <returns></returns>
    private TestSerilize XmlDeSerilize()
        FileStream fs = new FileStream(Application.dataPath+"/test.xml",FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);
        XmlSerializer xs = new XmlSerializer(typeof(TestSerilize));
        TestSerilize testSerilize = (TestSerilize) xs.Deserialize(fs);
        fs.Close();
        return testSerilize;
    #endregion
    #region Binary
    private void BinarySerTest()
        TestSerilize testSerilize = new TestSerilize();
        testSerilize.Id = 5;
        testSerilize.Name = "二进制测试";
        testSerilize.List = new List<int>();
        testSerilize.List.Add(10);
        testSerilize.List.Add(18);
        BinarySerilize(testSerilize);
    private void BinarySerilize(TestSerilize testSerilize)
        FileStream fs = new FileStream(Application.dataPath+"/test.bytes",FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(fs,testSerilize);
        fs.Close();
    private TestSerilize BinaryDeserilize()
        TextAsset textAsset = UnityEditor.AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/test.bytes");
        MemoryStream stream = new MemoryStream(textAsset.bytes);
        BinaryFormatter bf = new BinaryFormatter();
        TestSerilize testSerilize = (TestSerilize) bf.Deserialize(stream);
        stream.Close();
        return testSerilize;
    #endregion
<?xml version="1.0" encoding="utf-8"?>
<TestSerilize xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="1" Name="ceshi">
  <List>1</List>
  <List>2</List>
  <List>3</List>
</TestSerilize>
                                    C++调用tinyxml2读写xml本例子一共只需要3个文件获取所有代码请到github下载地址:哔哩哔哩有详细的视频讲解地址:main.cpptinyxml2.htinyxml2.cpp其他
本例子一共只需要3个文件
大家好,本文目的是实现C++调用tinyxml2读写xml文件。
第一个文件是自己编写的main.cpp文件;
第二个文件和第三个文件分别是tinyxml2.h和tinyxml2....
                                    关于为什么需要转换:本人步入Game行业已经4年了,但是配置文件要麽是原生的XML文件,要麽是别人的二进制文件.关于配置文件为啥要转换成二进制文件:主要是为了保密,其次才是节省空间.但是话又说回来了,使用二进制文件的时候,获取信息,需要多一步转化过程.再者,在一个Game项目中可能有多个配置文件,本人目前在开发的有100多个,那么打包成ini二进制是很有必要的.来个例子:XM...
                                    游戏里,我们经常遇到这种情景:要保存一些数据为文件,方便运行时再次读取使用。这就涉及到了序列化反序列化序列化:通常的来讲,就是把 对象 转成 二进制序列。可以简单的理解为把对象转成一个文件反序列化反序列化序列化的相反操作。可以简单的理解为,是把文件转为对象的这么一个过程既然是需要把对象序列化xml文件,那么为了方便测试,这里定义2个测试类//使用[XmlAttribute]特性,生成的xml标签等于该字段名‘val1’ [ XmlAttribute ] public int Val1;.......
FileStream ,以字节流的方式进行文件的读写,通常用于大文件(二进制文件)的读写
StreamReader和StreamWriter,通常用于对文本文件的读写,使用这个的好处时不同的文本文件有不同的编码格式,SteamReader会帮助我们自动处理,StreamWriter也可以指定写入文本的编码方式。
1.序列化...
                                    WinForm程序中,经常需要保存一些用户的本地配置,  这些设置的特点是:  1、安装的时候可以选择风格。  2、用户可以设置自己的风格,保存,再打开的时候应用这些风格。  这个时候可以使用将类的实例序列化,然后保存在文件中,每次启动程序的时候从中读取,保存设置的时候再写入,  所以要用到序列化序列化的方法很多,我这里主要介绍两种  需要被序列化的类用一个简单的Person类来代替  [S...
                                    序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。  .NET 框架提供两种序列化技术:  二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享该对象。可将对象序列化到流、磁盘和内存等,还可以通过...
                                            /**////         /// 泛型方法,将当对象序列化保存到XML文件        ///         /// 对象        /// 文件保存的位置        public static void XML序列化对象类型>(类型 对象, string 存储路径)        ...{            XmlSerializer XS = new 
                                    序列化反序列化
Microsoft .NET Framework提供如下两种序列化技术:
(1)二进制序列化:可以保持类型不变,即可以在应用程序的不同调用之间保留对象的状态
(2)XML和SOAP序列化:仅序列化公共属性和字段,不保存类型
一、二进制序列化反序列化
序列化可以被定义为将对象的状态存储到存储媒介的过程,在二进制序列化过程中,对象的公共字段和私有字段以及类的名称(包括
public static class InfoNeed
    public static readonly string path = Path.Combine(Application.dataP...