unity StreamingAssets路径
来源:互联网 发布:软件版本更新说明文档 编辑:程序博客网 时间:2024/05/20 18:18
我们在读写例如XML和TXT文件的时候,在电脑上和手机上路径不一致,造成了很多麻烦,其实有个简单的方法,在项目工程中新建一个StreamingAssets文件夹,把你的XML和TXT文件放到这里。
using UnityEngine; using System.Collections; using System.Xml; using System.Xml.Serialization; using System.IO; using System.Text; public class Reward { public int taskNo; public Task[] task = new Task[15]; public Attribute attribute; public Reward () {} public struct Task { [XmlAttribute("taskReward")] public string taskReward{ get; set;} public Id id1; public Id id2; public Id id3; } public struct Id { [XmlAttribute("flag")] public bool flag{ get; set;} [XmlAttribute("name")] public string name{ get; set;} [XmlText()] public string description{get;set;} } }public class AchievementManager: MonoBehaviour { Reward reward ; FileInfo fileInfo; string _data; void Start () { reward = new Reward(); LoadXML(); } void LoadXML() { if(Application.platform == RuntimePlatform.IPhonePlayer) { fileInfo = new FileInfo(Application.dataPath + "/Raw/" + "Achievement.xml"); StreamReader r = fileInfo.OpenText(); _data = r.ReadToEnd(); r.Close(); } else if(Application.platform == RuntimePlatform.Android) { fileInfo = new FileInfo(Application.streamingAssetsPath+"/Achievement.xml"); StartCoroutine("LoadWWW"); } else { fileInfo = new FileInfo(Application.dataPath + "/StreamingAssets/"+ "Achievement.xml"); StreamReader r = fileInfo.OpenText(); _data = r.ReadToEnd(); r.Close(); } if(_data.ToString() != "") { reward = (Reward)DeserializeObject(_data); } } void OnGUI() { GUI.Label(new Rect(0,0,Screen.width,Screen.height),"data:"+_data); if(Input.GetKey(KeyCode.Space)){Application.Quit(); } }IEnumerator LoadWWW(){WWW www = new WWW(Application.streamingAssetsPath+"/Achievement.xml");yield return www;_data =www.text;} public void Save() { _data = SerializeObject(reward); StreamWriter writer; fileInfo.Delete(); writer = fileInfo.CreateText(); writer.Write(_data); writer.Close(); } string UTF8ByteArrayToString(byte[] characters) { UTF8Encoding encoding = new UTF8Encoding(); string constructedString = encoding.GetString(characters); return (constructedString); } byte[] StringToUTF8ByteArray(string pXmlString) { UTF8Encoding encoding = new UTF8Encoding(); byte[] byteArray = encoding.GetBytes(pXmlString); return byteArray; } // Here we serialize our Reward object of reward string SerializeObject(object pObject) { string XmlizedString = null; MemoryStream memoryStream = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(Reward)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, pObject); memoryStream = (MemoryStream)xmlTextWriter.BaseStream; XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray()); return XmlizedString; } // Here we deserialize it back into its original form object DeserializeObject(string pXmlizedString) { XmlSerializer xs = new XmlSerializer(typeof(Reward)); MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); return xs.Deserialize(memoryStream); } }
注:其实每个平台的路径都可以是Application.streamingAssetsPath+"/Achievement.xml"。但是android平台必须要用WWW加载,其他的平台貌似也可以的,自己试试哈,呵呵~~~
- unity StreamingAssets路径
- unity StreamingAssets路径 .
- unity StreamingAssets路径
- Unity StreamingAssets Android路径问题
- 【Unity】关于各个平台加载streamingAssets路径
- Unity中的StreamingAssets
- unity 中使用 WWW 类读取 StreamingAssets 目录的路径问题
- StreamingAssets
- Android IOS ##StreamingAssets路径##XML操纵
- Unity中播放StreamingAssets文件夹下的视频文件(PlayFullScreenMovie)
- 不同平台下StreamingAssets的文件路径预编译
- unity从streamingassets拷贝到persistentassets,再从persistentassets用www加载进入场景
- Unity 发布Android不能够正确读取StreamingAssets文件夹下内容
- StreamingAssets文件
- unity 路径
- Unity(六) 使用XML/JSON/Binary数据文件封装场景以及StreamingAssets目录的安卓平台同步
- 【Unity】unity jar 包路径
- Resources 与 StreamingAssets
- 工厂方法模式
- Mysql参数详解
- 展讯平台配置系统app文件位置
- 详解MyISAM Key Cache(中篇)
- 单例模式
- unity StreamingAssets路径
- Netstream下的onPlayStatus事件不能触发之原因
- CString 和 int 之间相互转换
- 2010-10-20 21:52 前台Js与后台C#互相调用
- monotouch包住framework与dylib
- #define、const和enum
- JQuery js / Fullscreen.js
- linux的物理内存与线性地址空间布局--1
- Android API学习 SoundPool 和 MediaPlayer