- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
95 lines
3.0 KiB
C#
95 lines
3.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
using UnityEngine;
|
|
|
|
public static class XmlHelper
|
|
{
|
|
/// <summary>
|
|
/// 序列化--内存流
|
|
/// </summary>
|
|
/// <param name="pObject">对象</param>
|
|
/// <param name="t">类型</param>
|
|
/// <returns></returns>
|
|
public static string SerializeObject(object pObject, Type t)
|
|
{
|
|
string XmlizedString = null;
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
XmlSerializer xs = new XmlSerializer(t);
|
|
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
|
|
xs.Serialize(xmlTextWriter, pObject);
|
|
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
|
|
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
|
|
//Debug.Log("" + XmlizedString);
|
|
return XmlizedString;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 字节转string
|
|
/// </summary>
|
|
/// <param name="characters">字节数组</param>
|
|
/// <returns></returns>
|
|
private static string UTF8ByteArrayToString(byte[] characters)
|
|
{
|
|
UTF8Encoding encoding = new UTF8Encoding();
|
|
string constructedString = encoding.GetString(characters);
|
|
return (constructedString);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 反序列化
|
|
/// </summary>
|
|
/// <param name="pXmlizedString">string内容</param>
|
|
/// <param name="t">类型</param>
|
|
/// <returns></returns>
|
|
public static object DeserializeObject(string filePath, Type t)
|
|
{
|
|
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
|
|
XmlSerializer xs = new XmlSerializer(t);
|
|
//MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(fileStream));
|
|
//XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
|
|
return xs.Deserialize(fileStream);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 字符串转字节数组
|
|
/// </summary>
|
|
/// <param name="pXmlString">字符内容</param>
|
|
/// <returns></returns>
|
|
private static byte[] StringToUTF8ByteArray(string pXmlString)
|
|
{
|
|
UTF8Encoding encoding = new UTF8Encoding();
|
|
byte[] byteArray = encoding.GetBytes(pXmlString);
|
|
return byteArray;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 序列化--XML文件
|
|
/// </summary>
|
|
/// <param name="pObject">对象</param>
|
|
/// <param name="t">类型</param>
|
|
/// <param name="XMLPath">生成的xml路径</param>
|
|
public static bool SerializeObjectXML(object pObject, Type t, string XMLPath)
|
|
{
|
|
XmlWriterSettings ws = new XmlWriterSettings();
|
|
ws.Encoding = Encoding.UTF8;
|
|
try
|
|
{
|
|
XmlWriter xmTextWriter = XmlWriter.Create(XMLPath, ws);
|
|
XmlSerializer xmlFormat = new XmlSerializer(t);
|
|
xmlFormat.Serialize(xmTextWriter, pObject);
|
|
xmTextWriter.Close();
|
|
return true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.Log(e.Message);
|
|
return false;
|
|
}
|
|
}
|
|
}
|