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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值