void TryCreatingHiddenAgent() { if (HiddenAgent == null) { var hiddenObject = new GameObject("(Hidden) " + name); hiddenObject.hideFlags = HideFlags.NotEditable; hiddenObject.transform.SetParent(transform.parent); #if UNITY_EDITOR var staticFlags = GameObjectUtility.GetStaticEditorFlags(gameObject); GameObjectUtility.SetStaticEditorFlags(hiddenObject, staticFlags); #else hiddenObject.isStatic = gameObject.isStatic; #endif HiddenAgent = hiddenObject.AddComponent <HiddenNavMeshAgent>(); CustomNavMesh.RegisterAgent(this, HiddenAgent); } }
void TryDestroyingHiddenAgent() { if (HiddenAgent != null) { CustomNavMesh.UnregisterAgent(this, HiddenAgent); if (Application.isPlaying) { Destroy(HiddenAgent.gameObject); } else { // avoid "Cannot destroy GameObject while it's parent is being activated or deactivated" when leaving scene if (SceneManager.GetActiveScene().isLoaded) { DestroyImmediate(HiddenAgent.gameObject); } } } }
//[MenuItem("UAIPC/Ch02/CustomNavMeshWindow")] static void Init() { //window = EditorWindow.GetWindow<CustomNavMeshWindow>(); //window.title = "CustomNavMeshWindow"; SceneView.onSceneGUIDelegate += OnScene; graphObj = GameObject.Find("CustomNavMesh"); if (graphObj == null) { graphObj = new GameObject("CustomNavMesh"); graphObj.AddComponent <CustomNavMesh>(); graph = graphObj.GetComponent <CustomNavMesh>(); } else { graph = graphObj.GetComponent <CustomNavMesh>(); if (graph == null) { graphObj.AddComponent <CustomNavMesh>(); } graph = graphObj.GetComponent <CustomNavMesh>(); } }