unity StreamingAssets路径 .

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,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); 
   } 
}

我们在读写例如XML和TXT文件的时候,在电脑上和手机上路径不一致,造成了很多麻烦,其实有个简单的方法,在项目工程中新建一个StreamingAssets文件夹,把你的XML和TXT文件放到这里。

注:其实每个平台的路径都可以是Application.streamingAssetsPath+"/Achievement.xml"。但是android平台必须要用WWW加载,其他的平台貌似也可以的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇