I have a custom editor in which I’m displaying a UnityEvent. All works fine. However, I want to always ensure the PersistentListenerState is always Runtime only. Unfortunately I’m unable to convert the SerializedProperty of a UnityEvent to an actual UnityEvent. I was anticipating I could just always set the PersistentListenerState to enforce this.
private void OnEnable() {
mMyEventProp = serializedObject.FindProperty("mMyEvent ");
}
public override void OnInspectorGUI() {
serializedObject.Update();
EditorGUILayout.PropertyField(mOnCreatePayloadProp);
//I was hoping to do something like
var myEvent = mMyEventProp.objectReferenceValue as MyEvent;
for (int index = 0; index < myEvent.GetPersistentEventCount(); index++) {
myEvent.SetPersistentListenerState(index, UnityEventCallState.RuntimeOnly);
}
//But get compile time error with casting objectReferenceValue
serializedObject.ApplyModifiedProperties();
}