protected static void AddVariable(object obj) { System.Type t = obj as System.Type; if (t == null) { return; } Undo.RecordObject(curFlowchart, "Add Variable"); Variable newVariable = curFlowchart.gameObject.AddComponent(t) as Variable; newVariable.Key = curFlowchart.GetUniqueVariableKey(""); curFlowchart.Variables.Add(newVariable); // Because this is an async call, we need to force prefab instances to record changes PrefabUtility.RecordPrefabInstancePropertyModifications(curFlowchart); }