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