Unity3D文件I/O StreamWriter文本文件
当我的脚本运行Unity3D文件I/O StreamWriter文本文件,unity3d,.net,unityscript,Unity3d,.net,Unityscript,当我的脚本运行start()函数调用saveLoadedChunk()函数调用writeChunks()函数时,我在文本文件中看到的就是Chunk(0,0,0) 需要做的是,在文本文件中,每个块都会被写入其坐标(但只有一次)。我编写了以下脚本,但它只编写(如我前面所说)Chunk(0,0,0) 是否有人可以调整此代码或给我一些帮助,使脚本写入文件中的所有块,但仅写入一次 非常感谢您的帮助 脚本的一部分 function saveLoadedChunk() { var loadedChun
start()
函数调用saveLoadedChunk()
函数调用writeChunks()
函数时,我在文本文件中看到的就是Chunk(0,0,0)
需要做的是,在文本文件中,每个块都会被写入其坐标(但只有一次)。我编写了以下脚本,但它只编写(如我前面所说)Chunk(0,0,0)
是否有人可以调整此代码或给我一些帮助,使脚本写入文件中的所有块,但仅写入一次
非常感谢您的帮助
脚本的一部分
function saveLoadedChunk() {
var loadedChunks : GameObject[] = FindObjectsOfType(GameObject) as GameObject[];
var fileName = "C:/Reactor Games/chunks.txt";
for (var i = 0; i < loadedChunks.length ; i++) {
if(loadedChunks[i].name.Substring(0,5) == "Chunk") {
if(loadedChunks[i].tag == "Player") {
}else{
if(System.IO.File.Exists(fileName)) {
Debug.Log("EXIST");
var xco1 = loadedChunks[i].transform.position.x;
var yco1 = loadedChunks[i].transform.position.y;
var zco1 = loadedChunks[i].transform.position.z;
writeChunks(fileName, xco1, yco1, zco1);
}else{
Debug.Log("NOTEXIST");
var sr = System.IO.File.CreateText(fileName);
var xco2 = loadedChunks[i].transform.position.x;
var yco2 = loadedChunks[i].transform.position.y;
var zco2 = loadedChunks[i].transform.position.z;
writeChunks(fileName, xco2, yco2, zco2);
}
}
}
}
}
function writeChunks(fileName : String, xco : int, yco : int, zco : int) {
var stringToWrite = "Chunk (" + xco + ", " + yco + ", " + zco + ")";
Debug.Log(stringToWrite);
var sw : System.IO.StreamWriter = new System.IO.StreamWriter(fileName);
sw.WriteLine(stringToWrite);
sw.Flush();
sw.Close();
}
函数saveLoadedChunk(){
var loadedChunks:GameObject[]=FindObjectsOfType(GameObject)作为GameObject[];
var fileName=“C:/Reactor Games/chunks.txt”;
对于(var i=0;i
在else分支中,将创建输出文件并将其保持打开状态,因此对writeChunks的第一次调用无法写入,因为它无法打开文件:
}else{
Debug.Log("NOTEXIST");
var sr = System.IO.File.CreateText(fileName); // This line opens the file and
// is unnecessary because the
// StreamWriter in writeChunks will
// create the file if it does not
// already exist. Remove this line.
// This entire else branch actually
// is redundant and may be removed.
var xco2 = loadedChunks[i].transform.position.x;
var yco2 = loadedChunks[i].transform.position.y;
var zco2 = loadedChunks[i].transform.position.z;
writeChunks(fileName, xco2, yco2, zco2);
}
这只会影响第一次写入,但是在WriteCunks中,每次都会覆盖文件的内容,而不是附加到文件中。StreamWriter类可以选择接受第二个布尔参数,该参数允许您打开文件并附加到该文件:
var sw : System.IO.StreamWriter = new System.IO.StreamWriter(fileName, true);
<>你也可以考虑重构你的代码,这样你就不会不断地打开和关闭类似于下面的文件:
function saveLoadedChunk() {
var loadedChunks : GameObject[] = FindObjectsOfType(GameObject) as GameObject[];
var fileName = "C:/Reactor Games/chunks.txt";
var sw : System.IO.StreamWriter = new System.IO.StreamWriter(fileName);
for (var i = 0; i < loadedChunks.length ; i++) {
if(loadedChunks[i].name.Substring(0,5) == "Chunk") {
if(loadedChunks[i].tag != "Player") {
var xco1 = loadedChunks[i].transform.position.x;
var yco1 = loadedChunks[i].transform.position.y;
var zco1 = loadedChunks[i].transform.position.z;
writeChunks(sw, xco1, yco1, zco1);
}
}
}
sw.Flush();
sw.Close();
}
function writeChunks(sw : System.IO.StreamWriter, xco : int, yco : int, zco : int) {
var stringToWrite = "Chunk (" + xco + ", " + yco + ", " + zco + ")";
Debug.Log(stringToWrite);
sw.WriteLine(stringToWrite);
}
函数saveLoadedChunk(){
var loadedChunks:GameObject[]=FindObjectsOfType(GameObject)作为GameObject[];
var fileName=“C:/Reactor Games/chunks.txt”;
var sw:System.IO.StreamWriter=new System.IO.StreamWriter(文件名);
对于(var i=0;i
谢谢您的回答。我无法在接下来的10个小时内对此进行测试,但我非常感谢您的帮助。这是unityscript,不是javascript