在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
由于
答案 0 :(得分:2)
System.IO.File.Exists("path")
更改为System.IO.File.Exists(path)
"path"
是普通字符串,没有引号的path
是对变量的引用。
这是尽可能简单的。不知道你从哪里来到C#,但我会建议阅读一些关于它的书籍或教程