Unity3D在路径判断上的一个注意点

在Unity3D开发项目时,有时需要进行路径是否存在的断定:

System.IO.File.Exist(string filePath);
System.IO.Directory(string dirPath);

注意这接口只是判定磁盘(闪存)物理路径上是否存在某个文件(目录),我们知道Application.streamingAssetsPath取到的是StreamingAssets资源包路径,此资源包是Unity3D在编译时将工程目录StreamingAssets中的资源编译打包后生成的。
所以,我们尝试:

System.IO.File.Exist(Application.StreamingAssets + "/file.txt");

这样去判定文件是否存在时,会返回False,因为这本就不是一个文件物理路径。

Application.persistentDataPath所指向路径,及其下的文件不会被Unity3D编译打包,其中的文件或目录是可以使用System.IO.File.Exist()接口判断是否存在的

标签:unity3d, c#

已有 2 条评论

  1. 你的意思是,如果文件在Application.StreamingAssets中,用System.IO.File.Exist是取不到他的存在与否的,而persistentDataPath就可以是吧?

    1. 是的,persistentDataPath是真实存在的物理路径,如果做热更新资源也是放到persistentDataPath目录

添加新评论