Unity3D ScriptableObject与UnityEvent不保存事件参数

时间:2017-10-09 12:18:41

标签: c# unity3d inspector

我有一个ScriptableObject容器,我在自定义编辑器上显示为图形的节点。容器还有一个自定义检查器,除了其他字段外,还有另一个名为Action的ScriptableObject。

我的问题是:Action有一个UnityEvent。当我设置要由事件调用的对象和方法时,它会持续存在没有问题,但是当我向方法添加一些参数时,参数不会持久存在。仅在更改参数后,我将方法更改为具有相同参数的其他方法,然后将其更改回来。我想通过这样做我强迫某种序列化。

如何使用此结构:

Custom editor on unity: It shows some nodes and the fileds on inspector respective to one of the nodes.

编辑:

这是我的Action类的代码,它包含UnityEvent:

[System.Serializable]
public class UnityEventAction : ToolKitAction {
public UnityEvent onInteractionTrigged;

public override void Execute( GameObject dialogController ){
    onInteractionTrigged.Invoke();
}

这是它扩展的ScriptableObject:

[System.Serializable]
public class ToolKitAction:  { public virtual void Execute(GameObject 
gameObject) { } 
}

包含此对象的类:

[System.Serializable]
public class Interaction {

private enum State{ ACTIVE, INACTIVE }; 
private State state = State.INACTIVE;

public int interactionId;
[SerializeField]
public ToolKitAction tkAction;
...
}

ScriptableObject,仅作为Interaction的容器,表示编辑器的节点。

public class InteractionContainer: ScriptableObject{
public Interaction interaction;
}

此容器的自定义检查器的类:

Custom Inspector

创建节点编辑器的自定义编辑器的类:

Custom Node Editor

0 个答案:

没有答案
相关问题