private Dictionary <string, List <UnityObject> > UnloadTypes(bool destroyObjects) { Dictionary <string, List <UnityObject> > typeToDestroyedObjects = new Dictionary <string, List <UnityObject> >(); if (m_runtimeAssembly != null) { Type[] unloadedTypes = m_runtimeAssembly.GetTypes().Where(t => typeof(MonoBehaviour).IsAssignableFrom(typeof(MonoBehaviour))).ToArray(); foreach (Type type in unloadedTypes) { if (destroyObjects) { List <UnityObject> destroyedObjects = new List <UnityObject>(); UnityObject[] objectsOfType = Resources.FindObjectsOfTypeAll(type); foreach (UnityObject obj in objectsOfType) { Destroy(obj); destroyedObjects.Add(obj); //m_editor.Undo.Erase(obj, null); } typeToDestroyedObjects.Add(type.FullName, destroyedObjects); } m_editorsMap.RemoveMapping(type); m_typeMap.UnregisterRuntimeSerialzableType(type); } } return(typeToDestroyedObjects); }
private void Cleanup() { if (m_gizmoManager != null) { m_gizmoManager.Unregister(typeof(NavMeshSurface)); m_gizmoManager.Unregister(typeof(NavMeshModifierVolume)); m_gizmoManager.Unregister(typeof(NavMeshLink)); } if (m_editorsMap != null) { m_editorsMap.RemoveMapping(typeof(NavMeshSurface)); m_editorsMap.RemoveMapping(typeof(NavMeshModifierVolume)); m_editorsMap.RemoveMapping(typeof(NavMeshLink)); m_editorsMap.RemoveMapping(typeof(NavMeshModifier)); m_editorsMap.RemoveMapping(typeof(NavMeshObstacle)); m_editorsMap.RemoveMapping(typeof(NavMeshAgent)); m_editorsMap.RemoveMapping(typeof(NavMeshDebugController)); } }