我遇到错误-“仅当我为Android构建我的统一应用程序时,“名称'FileUtil'在当前上下文中不存在”,但是当我在编辑器中运行它时,它运行正常,没有任何错误。该行基本上删除了一个文件夹
我尝试使用System.IO添加;但它仍然无法正常工作。如果我删除该行,它也可以工作。
public void Delete()
{
P = EventSystem.current.currentSelectedGameObject.transform;
FileUtil.DeleteFileOrDirectory(Application.persistentDataPath + "/ARPortal/" + P.parent.gameObject.name);
P.gameObject.SetActive(false);
P.parent.GetChild(4).transform.gameObject.SetActive(true);
counter = 0;
}
是否有任何变通方法或替代方法来删除文件夹。Snippet ofthe error i am encountering
答案 0 :(得分:0)
FileUtil
是UnityEditor
命名空间的一部分。它不存在于构建中,而仅存在于Unity编辑器本身中。
=> 您不能在内置的应用程序中使用任何内容。
通常,您仅将其用于编辑器脚本(只有在Unity中才能发生的事情,例如,具有精美的Inspector等)。
要从构建中排除此类代码部分,基本上有两种方法:
确保所有编辑器脚本都放在名为Editor
的文件夹中。这些将自动从构建过程中排除。
如果您只想排除构建的某些代码块(所有使用UnityEditor
的代码块,都可以将if pre-processors与UNITY_EDITOR
一起使用
#if UNITY_EDITOR
using UnityEditor;
#endif
...
#if UNITY_EDITOR
// some code using the UnityEditor namespace
#endif
要在运行时删除文件夹,您可以使用例如Directory.Delete
对于文件,您可以使用File.Delete
在两种情况下,您都不应直接连接路径字符串,而应使用Path.Combine
using System.IO;
...
var path = Path.Combine(Application.persistentDataPath, "ARPortal", P.parent.gameObject.name);
//if it is an empty folder use
Directory.Delete(path);
//if it is a folder with content use
Directory.Delete(path, true);
//if it is a file use
File.Delete(path);