Unity file.exists对于现有文件不返回true

时间:2018-02-04 20:47:18

标签: c# unity3d

在Unity c#中,file.exists始终返回false。

public class StartMenu : MonoBehaviour
{
public GameObject playButton;
public GameObject loadButton;

// Use this for initialization
void Start()
{
    // generate correct pathname format for device
    string path = Path.Combine(Application.persistentDataPath, "Data");
    path = Path.Combine(path, "Aralimar.data");

    Debug.Log(path);
    Debug.Log(System.IO.File.Exists("path"));

    if (System.IO.File.Exists("path"))
    {
        Debug.Log("Save game exists");
        playButton.SetActive(true);
        loadButton.SetActive(true);
    }
}

该文件存在,如果我将调试日志中的路径粘贴到Windows资源管理器中,它将打开没有问题。直接从startmenu调用的相关函数LoadGameData使用完全相同的路径形成,没有任何问题,因此Unity可以找到并打开该文件。

 public void LoadGameData()
{
    // generate correct pathname format for device
    string path = Path.Combine(Application.persistentDataPath, "Data");
    path = Path.Combine(path, "Aralimar.data");

    Debug.Log("Loading data from " + path);

    // load xml file into GameData
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(GameData));
    FileStream fileStream = new FileStream(path, FileMode.Open);
    gameData = xmlSerializer.Deserialize(fileStream) as GameData;
    fileStream.Close();
}

调试语句:

C:/Users/*myname*/AppData/LocalLow/Wyeknott/Aralimar\Data\Aralimar.data

False

Loading data from C:/Users/*myname*/AppData/LocalLow/Wyeknott/Aralimar\Data\Aralimar.data

系统细节:Windows 10,统一2017.3.0f3

由于

1 个答案:

答案 0 :(得分:2)

System.IO.File.Exists("path")更改为System.IO.File.Exists(path)

"path"是普通字符串,没有引号的path是对变量的引用。

这是尽可能简单的。不知道你从哪里来到C#,但我会建议阅读一些关于它的书籍或教程