private void SetMethod(SerializedProperty property, UnityEngine.Object target, MethodInfo methodInfo, bool dynamic) { SerializedProperty targetProp = property.FindPropertyRelative("_target"); targetProp.objectReferenceValue = target; SerializedProperty methodProp = property.FindPropertyRelative("_methodName"); methodProp.stringValue = methodInfo.Name; SerializedProperty dynamicProp = property.FindPropertyRelative("_dynamic"); dynamicProp.boolValue = dynamic; SerializedProperty argProp = property.FindPropertyRelative("_args"); ParameterInfo[] parameters = methodInfo.GetParameters(); argProp.arraySize = parameters.Length; for (int i = 0; i < parameters.Length; i++) { argProp.FindPropertyRelative("Array.data[" + i + "].argType").enumValueIndex = (int)Arg.FromRealType(parameters[i].ParameterType); argProp.FindPropertyRelative("Array.data[" + i + "]._typeName").stringValue = parameters[i].ParameterType.AssemblyQualifiedName; } property.FindPropertyRelative("dirty").boolValue = true; property.serializedObject.ApplyModifiedProperties(); property.serializedObject.Update(); }