请帮我纠正这个问题。
Assets / Menu.cs(97,73):警告CS0618:idToken
使用AssetDatabase.GetAssetPath'
构建播放器时出错,因为脚本存在编译器错误
Assets / Menu.cs(2,7):错误CS0246:找不到类型或命名空间名称“UnityEditor”。您是否缺少using指令或程序集引用?
UnityEditor.EditorUtility.GetAssetPath(UnityEngine.Object)' is obsolete:
答案 0 :(得分:5)
在使用任何Unity API之前,检查API命名空间非常重要。如果命名空间来自UnityEditor
,那么它仅适用于编辑器。这用于制作编辑器插件。您不能在构建中使用它,并且在构建任何平台时都会抛出错误。
根据文档,AssetDatabase
和EditorUtility
类来自UnityEditor
命名空间。
您必须在没有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 如果这样做,问题将消失