我的编程空间,编程开发者的网络收藏夹
学习永远不晚

unity3d里的XML读写示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

unity3d里的XML读写示例

关于U3D里面XML读写办法,谢谢刘老师的指导(刘国栋)


代码:




using UnityEngine;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System;
public class XmlSaver
{

    private static XmlSaver _Instance = null;
    public static XmlSaver GetInstance()
    {
        if (_Instance == null)
        {
            _Instance = new XmlSaver();
        }
        return _Instance;
    }
    //内容加密
    public string Encrypt(string toE)
    {
        //加密和解密采用相同的key,具体自己填,但是必须为32位//
        byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12348578902223367877723456789012");
        RijndaelManaged rDel = new RijndaelManaged();
        rDel.Key = keyArray;
        rDel.Mode = CipherMode.ECB;
        rDel.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = rDel.CreateEncryptor();
        
        byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toE);
        byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length);
        
        return Convert.ToBase64String(resultArray,0,resultArray.Length);
    }
    
    //内容解密
    public string Decrypt(string toD)
    {
        //加密和解密采用相同的key,具体值自己填,但是必须为32位//
        byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12348578902223367877723456789012");
        
        RijndaelManaged rDel = new RijndaelManaged();
        rDel.Key = keyArray;
        rDel.Mode = CipherMode.ECB;
        rDel.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = rDel.CreateDecryptor();
        
        byte[] toEncryptArray = Convert.FromBase64String(toD);
        byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray,0,toEncryptArray.Length);
        
        return UTF8Encoding.UTF8.GetString(resultArray);
    }
    
    public string SerializeObject(object pObject,System.Type ty)
    {
        string XmlizedString   = null;
        MemoryStream memoryStream  = new MemoryStream();
        XmlSerializer xs  = new XmlSerializer(ty);
        XmlTextWriter xmlTextWriter  = new XmlTextWriter(memoryStream, Encoding.UTF8);
        xs.Serialize(xmlTextWriter, pObject);
        memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
        XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
        return XmlizedString;
    }
    
    public object DeserializeObject(string pXmlizedString , System.Type ty)
    {
        XmlSerializer xs  = new XmlSerializer(ty);
        MemoryStream memoryStream  = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));
        XmlTextWriter xmlTextWriter   = new XmlTextWriter(memoryStream, Encoding.UTF8);
        return xs.Deserialize(memoryStream);
    }
    
    //创建XML文件
    public void CreateXML(string fileName,string thisData)
    {
        //string xxx = Encrypt(thisData);
        string xxx = thisData;
        StreamWriter writer;
        writer = File.CreateText(fileName);
        writer.Write(xxx);
        writer.Close();
    }
    
    //读取XML文件
    public string LoadXML(string fileName)
    {
        StreamReader sReader = File.OpenText(fileName);
        string dataString = sReader.ReadToEnd();
        sReader.Close();
        //string xxx = Decrypt(dataString);
        string xxx = dataString;
        return xxx;
    }
    
    //判断是否存在文件
    public bool hasFile(String fileName)
    {
        return File.Exists(fileName);
    }
    public string UTF8ByteArrayToString(byte[] characters  )
    {    
        UTF8Encoding encoding  = new UTF8Encoding();
        string constructedString  = encoding.GetString(characters);
        return (constructedString);
    }
    
    public byte[] StringToUTF8ByteArray(String pXmlString )
    {
        UTF8Encoding encoding  = new UTF8Encoding();
        byte[] byteArray  = encoding.GetBytes(pXmlString);
        return byteArray;
    }
}

后面是加载数据:


代码:


using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public static class DataLoadTest{
    public static List<Data> LevelData = new List<Data>();
    //static string _fileName = Application.dataPath + "/Resource/gamedata";
    static string _fileName = Application.persistentDataPath + "/gamedata";
    public static void Save()
    {
        string s = XmlSaver.GetInstance().SerializeObject(LevelData, typeof(List<Data>));
        XmlSaver.GetInstance().CreateXML(_fileName, s);
    }
    public static void Load()
    {
        try{
            string s = XmlSaver.GetInstance().LoadXML(_fileName);
            LevelData = XmlSaver.GetInstance().DeserializeObject(s, typeof(List<Data>)) as List<Data>;
        }
        catch {
            TraverseList();
            Save();
            string s = XmlSaver.GetInstance().LoadXML(_fileName);
            LevelData = XmlSaver.GetInstance().DeserializeObject(s, typeof(List<Data>)) as List<Data>;
        }
            
    }
    public static void TraverseList()
    {
        List<ScrollData> everyScrollData = new List<ScrollData>();
        everyScrollData.Add(new ScrollData(false, "挖掘机学校哪家强"));
        everyScrollData.Add(new ScrollData(false, "中国山东找蓝翔"));
        everyScrollData.Add(new ScrollData(false, "我特喵的只是开发者用来测试的"));

        everyScrollData.Add(new ScrollData(false, "有我所不乐意的,在天堂里,我不愿意去;有我所不乐意的,在地狱里,我不愿意去; 有我所不乐意的,在你们的世界里,我不愿意去。 "));
        everyScrollData.Add(new ScrollData(false, "我只愿蓬勃生活在此时此刻, 无所谓去哪,无所谓见谁。 那些我将要去的地方,都是我从未谋面的故乡; 那些我将要见的人,都会成为我的朋友。"));
        everyScrollData.Add(new ScrollData(false, "以前是以前,现在是现在。 我不能选择 怎么生,怎么死; 但我能决定 怎么爱,怎么活。这是我要的自由,我的黄金时代。 "));

        everyScrollData.Add(new ScrollData(false, "栈和队列的区别是啥?"));
        everyScrollData.Add(new ScrollData(false, "吃多了拉就是队列;"));
        everyScrollData.Add(new ScrollData(false, "吃多了吐就是栈"));

        everyScrollData.Add(new ScrollData(false, "壮岁旌旗拥万夫,锦襜突骑渡江初。燕兵夜娖银胡簶,汉箭朝飞金仆姑。"));
        everyScrollData.Add(new ScrollData(false, "追往事,叹今吾,春风不染白髭须。"));
        everyScrollData.Add(new ScrollData(false, "却将万字平戎策,换得东家种树书。"));

        everyScrollData.Add(new ScrollData(false, "第一天,小白兔去河边钓鱼,什么也没钓到,回家了。 "));
        everyScrollData.Add(new ScrollData(false, "第二天,小白兔又去河边钓鱼,还是什么也没钓到,回家了。"));
        everyScrollData.Add(new ScrollData(false, "第三天,小白兔刚到河边,一条大鱼从河里跳出来,冲着小白兔大叫:你他妈的要是再敢用胡箩卜当鱼饵,我就扁死你!"));

        everyScrollData.Add(new ScrollData(false, "程序员的读书历程:x 语言入门 —> x 语言应用实践 —> x 语言高阶编程 —> "));
        everyScrollData.Add(new ScrollData(false, "x 语言的科学与艺术 —> 编程之美 —> 编程之道 —> "));
        everyScrollData.Add(new ScrollData(false, "编程之禅 —> 颈椎病康复指南 —> 精神病康复指南 "));

        everyScrollData.Add(new ScrollData(false, "在一个精神病院里,有一天院长想看看三个精神病人的恢复情况如何,于是在他们每人面前放了一只小白兔。第一个精神病人坐在小白兔的上面,揪着小白兔的两只耳朵,嘴里嚷着“驾”,院长摇了摇头;"));
        everyScrollData.Add(new ScrollData(false, "第二个人背对着小白兔,拍着它的屁股,嘴里说着“给我追”,院长叹了口气;"));
        everyScrollData.Add(new ScrollData(false, "第三个蹲在那里一个劲儿的摸着小白兔,院长看后,满意地点点头,只听他说了一句:“小样的,放你300米,等我擦好车再追你!”院长倒地晕倒……"));

        everyScrollData.Add(new ScrollData(false, "创新无极限!只要敢想,没有什么不可能,立即跳出思维的框框吧。如果你正处于一个上升的朝阳行业,那么尝试去寻找更有效的解决方案:更招消费者喜爱、更简洁的商业模式。"));
        everyScrollData.Add(new ScrollData(false, "如果你处于一个日渐萎缩的行业,那么赶紧在自己变得跟不上时代之前抽身而出,去换个工作或者转换行业。不要拖延,立刻开始创新!"));
        everyScrollData.Add(new ScrollData(false, "--史蒂夫.乔布斯"));

        everyScrollData.Add(new ScrollData(false, "从前现在过去了再不来 红红落叶长埋尘土内 开始终结总是没变改 天边的你飘泊白云外 苦海翻起爱恨 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份"));
        everyScrollData.Add(new ScrollData(false, "情人别后永远再不来 无言独坐放眼尘世外 鲜花虽会凋谢 但会再开 一生所爱隐约 在白云外"));
        everyScrollData.Add(new ScrollData(false, "苦海翻起爱恨 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份 苦海翻起爱恨 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份"));
        LevelData.Add(new Data(0,true, "level1", everyScrollData[0], everyScrollData[1], everyScrollData[2]));
        LevelData.Add(new Data(1,false, "level2", everyScrollData[3], everyScrollData[4], everyScrollData[5]));
        LevelData.Add(new Data(2,false, "level3", everyScrollData[6], everyScrollData[7], everyScrollData[8]));
        LevelData.Add(new Data(3,false, "level4", everyScrollData[9], everyScrollData[10], everyScrollData[11]));
        LevelData.Add(new Data(4,false, "level5", everyScrollData[12], everyScrollData[13], everyScrollData[14]));
        LevelData.Add(new Data(5,false, "level6", everyScrollData[15], everyScrollData[16], everyScrollData[17]));
        LevelData.Add(new Data(6,false, "level7", everyScrollData[18], everyScrollData[19], everyScrollData[20]));
        LevelData.Add(new Data(7,false, "level8", everyScrollData[21], everyScrollData[22], everyScrollData[23]));
        LevelData.Add(new Data(8,false, "level9", everyScrollData[24], everyScrollData[25], everyScrollData[26]));
    }
    public static List<Data> getlistData()
    {     
        Load ();
        //TraverseList();
        return LevelData;
    }
    public static string GetLevelName(int i)
    {
        return LevelData [i].LevelName;
    }
}



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

unity3d里的XML读写示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

unity3d里的XML读写示例

关于U3D里面XML读写办法,谢谢刘老师的指导(刘国栋)代码:using UnityEngine;usi
2023-01-31

Java读写XML文件例子2

import java.util.*;import javax.xml.parsers.*;import org.w3c.dom.*;import java.io.*;import org.apache.crimson.tree.XmlDo
2023-06-03

HDFS读写的示例分析

这篇文章主要介绍了HDFS读写的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、HDFS读写之前提  NameNode(元数据节点):存放元数据(名称空间、副本数、
2023-06-02

C++、Qt分别读写xml文件的方法实例

Qt提供了QDomElement类用于完成对xml文件的读取和写入,这篇文章主要给大家介绍了关于C++、Qt分别读写xml文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-03-06

iOS读写json文件的方法示例

前言 本文主要给大家介绍了关于iOS读写json文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 一.获取沙盒路径 每个iOS应用都有自己专属的应用沙盒,应用沙盒就是文件系统中的目录。但是iOS系统会将每个应用
2022-05-29

linux块设备读写的示例分析

这篇文章主要为大家展示了“linux块设备读写的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux块设备读写的示例分析”这篇文章吧。1、 用户态程序通过open()打开指定的块设备
2023-06-12

python 文件读写操作示例源码解读

这篇文章主要为大家介绍了python 文件读写操作示例源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-24

android读写sd卡操作写入数据读取数据示例

代码如下:package com.example.sdcardtest;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;imp
2022-06-06

C#读写xml文件的方法有哪些

在C#中读写XML文件的方法有以下几种:使用XmlDocument类:XmlDocument类是System.Xml命名空间中的一个类,可以用于读取、创建和修改XML文档。可以使用Load方法来加载XML文件,使用SelectNodes和S
C#读写xml文件的方法有哪些
2024-03-01

Python文件的读写和异常代码示例

一、从文件中读取数据#!/usr/bin/env python with open('pi') as file_object:contents = file_object.read()print(contents)=============
2022-06-04

Go语言中XML文件的读写操作

本文主要介绍了Go语言中XML文件的读写操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

C#读写xml文件的方法是什么

这篇“C#读写xml文件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#读写xml文件的方法是什么”文章吧。C
2023-07-05

C#实现CSV文件读写的示例详解

这篇文章主要介绍了CsvHelper、TextFieldParser、正则表达式三种解析CSV文件的方法,顺带也会介绍一下CSV文件的写方法,需要的可以参考一下
2023-05-19

java 读写Parquet格式的数据的示例代码

本文介绍了java 读写Parquet格式的数据,分享给大家,具体如下:import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import j
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录