名称“ FileUtil”在当前上下文中不存在

时间:2019-04-19 11:10:05

标签: c# android visual-studio unity3d

我遇到错误-“仅当我为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

enter image description here

1 个答案:

答案 0 :(得分:0)

FileUtilUnityEditor命名空间的一部分。它不存在于构建中,而仅存在于Unity编辑器本身中。

=> 您不能在内置的应用程序中使用任何内容。


通常,您仅将其用于编辑器脚本(只有在Unity中才能发生的事情,例如,具有精美的Inspector等)。

要从构建中排除此类代码部分,基本上有两种方法:

  1. 确保所有编辑器脚本都放在名为Editor的文件夹中。这些将自动从构建过程中排除。

  2. 如果您只想排除构建的某些代码块(所有使用UnityEditor的代码块,都可以将if pre-processorsUNITY_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);