private void AddElement(string className, AC.Menu _menu) { Undo.RecordObject(_menu, "Add element"); List <int> idArray = new List <int>(); foreach (MenuElement _element in _menu.elements) { if (_element != null) { idArray.Add(_element.ID); } } idArray.Sort(); className = "Menu" + className; MenuElement newElement = (MenuElement)CreateInstance(className); newElement.Declare(); newElement.title = className.Substring(4); // Update id based on array foreach (int _id in idArray.ToArray()) { if (newElement.ID == _id) { newElement.ID++; } } _menu.elements.Add(newElement); if (!Application.isPlaying) { _menu.Recalculate(); } DeactivateAllElements(_menu); newElement.isEditing = true; selectedMenuElement = newElement; newElement.hideFlags = HideFlags.HideInHierarchy; AssetDatabase.AddObjectToAsset(newElement, this); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(newElement)); AssetDatabase.SaveAssets(); CleanUpAsset(); }