Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Unity3d 创建类似于Game Creator | Unity Editor定制的工具_Unity3d_Unity Editor - Fatal编程技术网

Unity3d 创建类似于Game Creator | Unity Editor定制的工具

Unity3d 创建类似于Game Creator | Unity Editor定制的工具,unity3d,unity-editor,Unity3d,Unity Editor,该项目的需求是创建一个工具,我可以通过编辑器脚本直接在游戏对象上定义简单的onClick、onTrigger或onCollision操作 Unity已经为onClick提供了一个按钮,在这个按钮中我可以选择游戏对象,让我可以访问该游戏对象上的所有脚本及其函数,然后我只需选择一个在运行时执行的函数 我需要什么- OnCollisionTrigger->它在编辑器中显示两个字段 1.Gameobject字段-在这里我可以简单地拖动任何场景Gameobject 2.功能列表,如切换激活、销毁等 我看过

该项目的需求是创建一个工具,我可以通过编辑器脚本直接在游戏对象上定义简单的onClick、onTrigger或onCollision操作

Unity已经为onClick提供了一个按钮,在这个按钮中我可以选择游戏对象,让我可以访问该游戏对象上的所有脚本及其函数,然后我只需选择一个在运行时执行的函数

我需要什么-
OnCollisionTrigger->它在编辑器中显示两个字段
1.Gameobject字段-在这里我可以简单地拖动任何场景Gameobject
2.功能列表,如切换激活、销毁等

我看过许多可用于编辑器脚本编写的视频,但没有一个可以解释这些主题

我知道我们在Unity Editor中有手柄,它非常适合做很多事情。但我真的不知道如何在编辑器上实现这样的东西

我不确定这个问题是否可以通过多种方式解决。但我还没有找到我需要开始研究的起点。 Unity Editor脚本在视频或文档中的文档记录很少。 任何指引我正确方向的帮助都会真正帮助我


提前非常感谢:)

您需要的是UnityEvents。创建UI.Button对象时,它有一个名为OnClick的UnityEvent

在下面的示例中,我创建了一个示例类,每当调用SomeFunction时,它都会触发OnSomethingAppended事件(您可以将其命名为OnClick或其他任何名称)。因为我“调用”了这个事件

如果你把它拖放到一个游戏对象上,你会在某个事件上看到UI.Button的OnClick事件

using UnityEngine;
using UnityEngine.Events;

public class Example : MonoBehaviour
{
    public UnityEvent OnSomethingHappened;

    private void SomeFunction() {
        OnSomethingHappened.Invoke();
    }

}

那么您是否需要编辑器中UI.Button对象的OnClick事件之类的东西?(但在自定义游戏对象上)
OnClick
是UnityEvent类型的对象。您只需使用它,并在您希望它触发的任何位置执行调用(碰撞时?然后在
oncollision
中调用它)。@dreamend Yes。你说得对。我想为游戏对象上的onClick、onCollision或onTrigger等事件添加自定义编辑器工具。类似于Unity默认为UI提供的功能。按钮对象(用于点击)@Draco18s我没有得到它。如何通过编辑器脚本将其集成?@rsinha请参阅dreamend的答案。它只是一个UnityEvent对象。