| Parameter | Description |
|---|---|
| left | The NavWorld on the left side of the operator. |
| right | The NavWorld on the right side of the operator. |
bool
true if the two NavWorld values reference different navigation systems, false otherwise.
Checks whether two NavWorld values refer to different underlying NavMesh worlds.
This operator is a syntactic shortcut equivalent to negating the result of NavWorld.Equals. Use it inside expressions where the != syntax is more concise than an explicit method call. Two NavWorld values are different when they point to separate internal navigation systems.
using UnityEngine; using UnityEngine.AI; using Unity.AI.Navigation.LowLevel; public class NavWorldEqualityExample : MonoBehaviour { NavWorld m_World; int m_CachedWorldHash; void OnEnable() { m_World = NavWorld.GetDefaultWorld(); m_CachedWorldHash = m_World.GetHashCode(); Debug.Log($"Cached the NavMesh world hash {m_CachedWorldHash}"); CompareNavigationWorldToPrevious(); // Destroying all the data makes every existing handle to the old world invalid. NavMesh.RemoveAllNavMeshData(); Debug.Log($"Removed all NavMesh data."); //m_CachedWorldHash = m_World.GetHashCode(); //Debug.Log($"Cached the NavMesh world, hash {m_CachedWorldHash}"); CompareNavigationWorldToPrevious(); } public void CompareNavigationWorldToPrevious() { NavWorld currentWorld = NavWorld.GetDefaultWorld(); // Equals, == and != compare the underlying navigation system rather than the struct // copy, so two handles obtained from the same world always compare equal. if (currentWorld == m_World) { Debug.Log($"The navigation world is the same as before."); // The handles are interchangeable, so keep one and release the duplicate. currentWorld.Dispose(); return; } Debug.Log($"The world was re-created: hash {m_CachedWorldHash} became {currentWorld.GetHashCode()}"); // Release the stale handle before replacing it, otherwise its safety handle leaks. m_World.Dispose(); m_World = currentWorld; m_CachedWorldHash = m_World.GetHashCode(); } void OnDisable() { m_World.Dispose(); } }