天天看點

unity 多物體标簽_關于儲存多個同樣标簽遊戲物體位置的腳本,大家幫我看看

該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓

#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。