如何更新Unity中的var

时间:2018-01-15 00:26:16

标签: c# unity3d unity5

我希望我的var深度例如每次都找到一个新值,我这样做但我不知道如果这是更新此var的最佳方式。

void Update()
{
    Terrain terrain = GetComponent<Terrain>();
    terrain.terrainData = GenerateTerrain(terrain.terrainData);

    offsetX += Time.deltaTime * 1f;

    StreamReader reader = new StreamReader(@"C:\Users\----\documents\BrainGrapher\posiciones.txt");
    char[] delimitar = { ':' };
    string s = reader.ReadLine();
    string[] value = s.Split(delimitar);

    while (s != null)
    {
        for (int move = 0; move < value .Length; move ++)
        {
            save= vlues[recorrer];
            Debug.Log(save);
        }
        depth = Convert.ToInt32(save);
        Debug.Log(depth);
        s = reader.ReadLine();
    }

}

我们的想法是从文件中获取一个值,每次更新此值时,var深度都会更改,因此图形也会更改,变量深度就在这里使用。

    TerrainData GenerateTerrain(TerrainData terrainData)
{
    terrainData.heightmapResolution = width + 1;
    terrainData.size = new Vector3(width, depth, height);
    terrainData.SetHeights(0, 0, GenerateHeights());
    return terrainData;
}

谢谢。

1 个答案:

答案 0 :(得分:1)

在C#中,有一个名为FileSystemWatcher的类。

此类允许您注册一个事件,这样您就不必通过阅读每次更新中的文件来检查自己。

您应该在Start方法中创建一个FileSystemWatcher并注册它。然后,如果文件已更改,则只读取深度值,并且您不必在更新方法中执行任何操作。你甚至可以检查这些事件

        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);