Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# inspector中脚本中的设置按钮_C#_Unity3d - Fatal编程技术网

C# inspector中脚本中的设置按钮

C# inspector中脚本中的设置按钮,c#,unity3d,C#,Unity3d,我正在尝试在UnityEngine上创建RTS。就像《帝国时代》系列一样,屏幕底部有一个菜单,取决于您选择的对象。 因此,我为所有对象从中继承的可选对象创建了一个类SObject。例如,有一个类SHarvester,一个类SAnimals,等等。。。SObject类有一个属性: [SerializeField] private List<UnityAction> m_buttonCreation = new List<UnityAction>(); 此列表包含特定于对象

我正在尝试在UnityEngine上创建RTS。就像《帝国时代》系列一样,屏幕底部有一个菜单,取决于您选择的对象。 因此,我为所有对象从中继承的可选对象创建了一个类SObject。例如,有一个类SHarvester,一个类SAnimals,等等。。。SObject类有一个属性:

[SerializeField]
private List<UnityAction> m_buttonCreation = new List<UnityAction>();
此列表包含特定于对象的方法,该对象将链接到屏幕底部菜单的按钮

如果您从脚本中定义了列表,那么一切都正常工作

但我希望在编辑器中有单元或建筑的预制件,并直接从检查器定义方法列表。但是unityAction类型不会显示在inspector中

是否有办法在inspector中显示UnityAction类型?类似于按钮组件:


如果我没有说清楚,我向您道歉。

如果您没有坚持统一行动,您可以使用:

[序列化字段] 列表m_按钮创建=新列表; 这会在你的检查员身上出现

默认的UnityButton组件包含UnityEvents,但不包含UnityActions:

Button.cs

名称空间UnityEngine.UI { [AddComponentMenuUI/按钮,30] 公共类按钮:可选、IPointerClickHandler、IEventSystemHandler、ISubmitHandler { 保护按钮; 公共按钮ClickedEvent onClick{get;set;} 公共虚拟void OnPointerClickPointerEventData事件数据; SubmitBaseEventData事件数据上的公共虚拟void; 公共类按钮ClickedEvent:UnityEvent { 公共按钮ickedevent; } } } 当然,UnityEvent与UnityAction一起工作,所以我想您应该将Action更改为Event

UnityEvent.cs

公共类UnityEvent:UnityEventBase { [必填ByNativeCode] 公共单位事件; //这是当您单击+符号时运行的 公共void AddListenerUnityAction调用; 公共无效调用; //这是当您单击-符号时运行的内容 公共void RemoveListenerUnityAction调用; 受保护的重写MethodInfo FindMethod_Implstring名称、对象targetObj; }
我考虑过了,但随后我将按钮和onClick操作与函数AddListenerUnityAction方法链接起来。参数必须是UnityAction,而不是UnityEvent。有没有其他方法可以连接unityEvent和按钮的单击动作?我真的不明白你的意思。您可以将函数拖放到此列表中。这就是你想要的还是不想要的?好吧,我重新读了一遍,我想我知道你想要实现什么。您基本上希望将操作添加到此列表中。更具体地说,在我的游戏中,如果用户单击某个对象,将调用UIManager中的一个函数,将按钮的操作与我上面描述的属性列表绑定。例如,如果目标是一个单位,则可以进行攻击或防御;如果目标是一个建筑,则可以创建一个战士或提高收割者的技能。