【发布时间】:2022-09-27 18:41:38
【问题描述】:
我有一个脚本物品.cs负责设置玩家物品栏中物品的参数。在其中,我连接 Unity Editor 库并创建一个继承自 Editor 类的类。直到最近我还在使用 Unity 版本2020.3.0f1一切都很好,但现在我安装了2021.3.9f1我开始遇到问题。
构建项目时,出现以下错误:
Assets\\Inventory\\Items.cs(31,31): error CS0246: The type or namespace name \'Editor\' could not be found(您是否缺少 using 指令或程序集引用?)
Assets\\Inventory\\Items.cs(30,5):错误 CS0246:找不到类型或命名空间名称 \'CustomEditorAttribute\'(您是否缺少 using 指令或程序集引用?)
Assets\\Inventory\\Items.cs(30,5):错误 CS0246:找不到类型或命名空间名称 \'CustomEditor\'(是否缺少 using 指令或程序集引用?)
Assets\\Inventory\\Items.cs(32,28):错误 CS0115:\'Items.ItemsEditor.OnInspectorGUI()\':找不到合适的方法来覆盖
代码:
using UnityEngine;
using UnityEditor;
public class Items : MonoBehaviour {
public enum itemTypes { Weapon, Potion, Amulet }
public enum potionType { Health, Poison, Strong, Beer }
public enum amuletType { Health, Defense, Speed }
[Header(\"Main Settings\")]
public itemTypes ItemTypes;
[HideInInspector] public GameObject Model;
[HideInInspector] public Texture2D Icon;
[HideInInspector] public string itemName;
[HideInInspector] public int itemNum;
// Weapon
[HideInInspector] public float damage;
[HideInInspector] public float atackSpeed;
[HideInInspector] public int broken;
// Potion
[HideInInspector] public potionType Potion = potionType.Health;
[HideInInspector] public float healthOfset;
[HideInInspector] public bool processingEffect;
// Amulet
[HideInInspector] public amuletType Amulet = amuletType.Health;
[HideInInspector] public float amuletValue;
[CustomEditor(typeof(Items))]
public class ItemsEditor : Editor {
public override void OnInspectorGUI() {
base.OnInspectorGUI();
Items items = (Items) target;
DrawMain(items);
EditorGUILayout.Space();
switch (items.ItemTypes) {
case itemTypes.Weapon:
WeaponSettings();
break;
case itemTypes.Potion:
PotionSettings();
break;
case itemTypes.Amulet:
AmuletSettings();
break;
}
serializedObject.ApplyModifiedProperties();
}
void DrawMain(Items items) {
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"Icon\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"Model\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"itemNum\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"itemName\"));
EditorGUILayout.Space();
}
void WeaponSettings() {
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"damage\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"atackSpeed\"));
}
void PotionSettings() {
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"Potion\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"healthOfset\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"processingEffect\"));
}
void AmuletSettings() {
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"Amulet\"));
EditorGUILayout.PropertyField(serializedObject.FindProperty(\"amuletValue\"));
}
}
}
-
我认为您需要将脚本放在一个名为 Editor 的文件夹中,这样就像插件一样,它知道如何处理它,因为编辑器在构建中不可用。