UNITY-名称“ AssetDatabase”在当前上下文中不存在

Sam*_*Sam 1 unity-game-engine

尝试使用统一性构建游戏时收到以下错误:

该名称AssetDatabase在当前上下文中不存在

任何人都可以帮忙..我将感谢您能提供的所有帮助..谢谢

生成完成,结果为“失败” UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()

UnityEditor.BuildPlayerWindow + BuildMethodException:
  UnityEditor.BuildPlayerWindow + DefaultBuildMethods.BuildPlayer上的5个错误(BuildPlayerOptions选项)[0x0021f]在C:\ buildslave \ unity \ build \ Editor \ Mono \ BuildPlayerWindowBuildMethods.cs:187中,
  在UnityEditor.BuildPlayerWindow.CallBuildMethods(Boolean askForBuildLocation,BuildOptions defaultBuildOptions)[0x0007f]在C:\ buildslave \ unity \ build \ Editor \ Mono \ BuildPlayerWindowBuildMethods.cs:94 UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()

Mat*_*ith 6

AssetDatabase仅适用于编辑器。你可以用Resources.Load它代替。

例如:

var jsonTextFile = Resources.Load<TextAsset>("Text/jsonFile01");

来自Unity 的Resources.Load文档

加载存储在资源path文件夹中的请求类型的资源 。

如果可以找到该资源,则该方法返回该资源path,否则返回 null。请注意,path不区分大小写,并且不得包含文件扩展名。Unity中的所有资源名称和路径都使用正斜杠,因此在路径中使用反斜杠将不起作用。

它与项目的 Assets 文件夹中名为Resourcespath的任何文件夹相关。可以使用多个资源文件夹。如果您有多个资源文件夹,则无法重复使用资产名称。例如,项目可能具有名为和的资源文件夹 。路径不需要在字符串中包含和,例如加载游戏对象 at 只需要作为路径。此外,如果存在,可以将其用作字符串来加载。如果您有多个 资源文件夹,则无法重复使用资产名称。Assets / Resources/Assets / Guns / Resources/AssetsResourcesAssets / Guns / Resources / Shotgun.prefabShotgunAssets / Resources / Guns / Missiles / PlasmaGun.prefabGuns / Missiles / PlasmaGunpath


der*_*ugo 5

似乎在您使用的脚本之一中,AssetDatabase它属于UnityEditor名称空间。它仅存在于Unity编辑器内部。

在构建中,命名空间UnityEditor不存在->您不能在构建的应用程序中使用任何名称空间!


因此,在意识到基本有解决方案之后,如何使用自定义编辑器脚本或某些代码块(仅在Unity编辑器内部而不在构建中存在)修复这些错误:

  1. 请确保所有仅是编辑器脚本的脚本都放在名为的文件夹中Editor。Unity自动排除构建中的那些。

  2. 或将#if预处理器与一起使用UNITY_EDITOR

    #if UNITY_EDITOR
        using UnityEditor;
    #endif
    
    ...
    
    #if UNITY_EDITOR
        //some code here that uses something from the UnityEditor namespace
    #endif
    
    Run Code Online (Sandbox Code Playgroud)