该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#pragma strict
import System; import System.Xml;
import System.Xml.Serialization;
import System.IO;
import System.Text;
class DemoDatas2
{
var levelscount : int;
var money : int;
var name : String; /*在此处可以增加你需要的其它参数*/
var wutiid : int;
var x : float;
var y : float;
var z : float;
}
class UserDatas2
{
public var Player : DemoDatas = new DemoDatas();
function UserDatas() { }
}
private var _FileLocation : String;
private var _FileName : String = "SaveData.xml";
private var myData : UserDatas;
private var _data : String;
private var VPosition : Vector3;
function Awake()
{
_FileLocation=" E:/Program Files/Unity/kingjack/freway of titan'wa0.6/Assets/save/save01";
_FileLocation=Application.dataPath;
_FileLocation=Application.dataPath;
myData=new UserDatas();
}
//kingjack
//var Player :GameObject;
function Getwutijihe()
{
varPlayers:GameObject;
Players = GameObject.FindWithTag ("Player");
var count : int = 0;
var PlayerNumber : int = 0;//物体个数
for( var Player : GameObject in Players)
{
PlayerNumber++;
}
var Playermen : GameObject[] = new GameObject[PlayerNumber];
for( var Player : GameObject in Players)
{
Playermen[count] = Player;
count++;
myData.Player.x = Player.transform.position.x;
myData.Player.y = Player.transform.position.y;
myData.Player.z = Player.transform.position.z;
_data = SerializeObject(myData);
CreateXML();
Debug.Log("yes save!");
}
return Playermen;
}
/
function OnGUI()
{
var Player : GameObject;
// ***************************************************
// Saving 玩家信息
// **************************************************
if (GUI.Button(Rect(10,80,100,20),"Save"))
{
Getwutijihe();
myData.Player.levelscount = 10; //关卡
myData.Player.money = 985; //钱数
myData.Player.name = "玩家名字";
myData.Player.x = Player.transform.position.x;
myData.Player.y = Player.transform.position.y;
myData.Player.z = Player.transform.position.z;
_data = SerializeObject(myData);
CreateXML();
}
// ***************************************************
// Loading 玩家信息
// **************************************************
var st : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName);
GUI.enabled = st.Exists; //判断是否有保存的信息,确定是否可以load
if (GUI.Button(Rect(10,120,100,20),"Load")) {
LoadXML();
if(_data.ToString() != "")
{
myData = DeserializeObject(_data);
print("关卡:" + myData.Player.levelscount);
print("金钱:" + myData.Player.money);
print("玩家:" + myData.Player.name);
print("x:" + myData.Player.x);
print("y:" + myData.Player.y);
print("z:" + myData.Player.z);
VPosition=new Vector3(myData.Player.x,myData.Player.y,myData.Player.z);
Player.transform.position=VPosition;
}
}
}
function UTF8ByteArrayToString(characters : byte[] )
{
var encoding : UTF8Encoding = new UTF8Encoding();
var constructedString : String = encoding.GetString(characters);
return (constructedString);
}
function StringToUTF8ByteArray(pXmlString : String)
{
var encoding : UTF8Encoding = new UTF8Encoding();
var byteArray : byte[] = encoding.GetBytes(pXmlString);
return byteArray;
}
function SerializeObject(pObject : Object)
{
var XmlizedString : String = null;
var memoryStream : MemoryStream = new MemoryStream();
var xs : XmlSerializer = new XmlSerializer(typeof(UserDatas));
var xmlTextWriter : XmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
function DeserializeObject(pXmlizedString : String)
{
var xs : XmlSerializer = new XmlSerializer(typeof(UserDatas));
var memoryStream : MemoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));
var xmlTextWriter : XmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return xs.Deserialize(memoryStream);
}
function CreateXML()
{
var writer : StreamWriter;
var t : FileInfo = new FileInfo(_FileLocation+"/"+ _FileName);
if(!t.Exists)
{
writer = t.CreateText();
}
else
{
t.Delete();
writer = t.CreateText();
}
writer.Write(_data);
writer.Close();
}
function LoadXML()
{
var r : StreamReader = File.OpenText(_FileLocation+"/"+ _FileName);
var _info : String = r.ReadToEnd();
r.Close();
_data=_info;
}
这个代码有点问题,另外不知道如何读取数组求解?
代码功能是实现将一个场景里所有带player标签的物体的位置信息保存成XML。