找不到类型或命名空间名称“UnityEditor”

时间:2016-10-15 22:09:37

标签: c# unity3d

请帮我纠正这个问题。

Assets / Menu.cs(97,73):警告CS0618:idToken使用AssetDatabase.GetAssetPath'

构建播放器时出错,因为脚本存在编译器错误

Assets / Menu.cs(2,7):错误CS0246:找不到类型或命名空间名称“UnityEditor”。您是否缺少using指令或程序集引用?

UnityEditor.EditorUtility.GetAssetPath(UnityEngine.Object)' is obsolete:

2 个答案:

答案 0 :(得分:5)

在使用任何Unity API之前,检查API命名空间非常重要。如果命名空间来自UnityEditor,那么它仅适用于编辑器。这用于制作编辑器插件。您不能在构建中使用它,并且在构建任何平台时都会抛出错误。

根据文档,AssetDatabaseEditorUtility类来自UnityEditor命名空间。

enter image description here

您必须在没有GetAssetPath功能的情况下重新设计游戏。你绝对可以制作没有这个功能的游戏。我不知道你在做什么,但你应该看看Resources类。这将帮助您在运行时加载GameObjects。

要解决您当前的问题,

替换

using UnityEditor;

#if UNITY_EDITOR
using UnityEditor;
#endif

然后替换

objMaterial.textureName = EditorUtility.GetAssetPath(mats[material].mainTexture);

        objMaterial.textureName = "";
#if UNITY_EDITOR
        objMaterial.textureName = EditorUtility.GetAssetPath(mats[material].mainTexture);
#endif

您也可以将Menu脚本放在Assets / Editor目录中的文件夹中,但请理解这并不能解决您的代码无法在建立。它只允许您的项目在您的问题中没有这些错误的情况下构建。 UnityEditor命名空间中的类仅用于编辑器插件。

答案 1 :(得分:1)

之所以会这样,是因为需要将使用UnityEditor的类放在一个名为Editor的文件夹下:Assets / Editor 如果这样做,问题将消失