Unity编辑器类中的问题

今天写编辑器类遇见一个问题。

[CanEditMultipleObjects()]
[CustomEditor(typeof(DialogueBox), true)]
public class CharactersBox : Editor
{
public List characters;
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("Add a player"))
{
// GameObject.FindObjectOfType().characters.Add(null);
CharacterBox cb = new Character(); 这里会提示 You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at allUnityEngine.MonoBehaviour:.ctor()
你试图使用new关键字创建一个mono的实例,这是不允许的 Mono只能通过AddCompoent()添加 另外,你的脚本可以继承自可放脚本的物体 或者 没有基类。

//上网查了一下 大概是因为你实例化的Mono没有和物体有关联。所以不能实例化
//需要用AddCompoent()来添加

我实例化的Mono是挂在物体上的
后来想一下 可能是因为你实例化Mono但是没有说这个mono在物体上
CharacterBox cb = new Character(); 这句话只表明了你要实例化一个Mono的脚本
改成了
GameObject.FindObjectOfType().characters.Add(null);
就好使了 这句话就是先找到了挂载Mono的object 然后再执行操作的。
cb.character.add(null);
}
}
}


最可气的是这是个警告而不是error 我找了半天也没发现错误在那
因为警告让我屏蔽了。。。。
主要还不是因为有一大堆警告乱七八糟的看着眼晕嘛。。。。

你可能感兴趣的:(Unity问题合集)