public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(_initialState); if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); } if (Application.isPlaying) { _debugAction = EditorGUILayout.TextArea(_debugAction, GUILayout.MinHeight(100f)); if (GUILayout.Button("Dispatch")) { var rawAction = JObject.Parse(_debugAction); var typeProperty = rawAction.Property("Type"); if (typeProperty != null && typeProperty.Value.Type == JTokenType.String) { var typeName = typeProperty.Value.ToString(); var actionType = AppDomain.CurrentDomain.GetAssemblies() .Select(assembly => assembly.GetType(typeName)) .Where(t => t != null) .First(); var action = rawAction.ToObject(actionType); _target.Dispatch(action); } } } }