我有一个ScriptableObject容器,我在自定义编辑器上显示为图形的节点。容器还有一个自定义检查器,除了其他字段外,还有另一个名为Action的ScriptableObject。
我的问题是:Action有一个UnityEvent。当我设置要由事件调用的对象和方法时,它会持续存在没有问题,但是当我向方法添加一些参数时,参数不会持久存在。仅在更改参数后,我将方法更改为具有相同参数的其他方法,然后将其更改回来。我想通过这样做我强迫某种序列化。
如何使用此结构:
编辑:
这是我的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;
}
此容器的自定义检查器的类:
创建节点编辑器的自定义编辑器的类: