Unity编辑器类中的问题

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

[CanEditMultipleObjects()]
[CustomEditor(typeof(DialogueBox), true)]
public class CharactersBox : Editor
{
public List<GameObject> characters;
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("Add a player"))
{
// GameObject.FindObjectOfType<DialogueBox>().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<DialogueBox>().characters.Add(null);
就好使了 这句话就是先找到了挂载Mono的object 然后再执行操作的。
cb.character.add(null);
}
}
}


最可气的是这是个警告而不是error 我找了半天也没发现错误在那
因为警告让我屏蔽了。。。。
主要还不是因为有一大堆警告乱七八糟的看着眼晕嘛。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值