Exemple #1
0
    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();
    }