Checking if object is null not working

Hi, I’m trying to make a vault script in which it finds the nearest vaultable object, the problem is when there are no vaultable objects. I tried to check if its null but doesn’t work, here’s the code:

void FindClosestVaultable()
	{
		float distanceToClosestVault = Mathf.Infinity;
		Vaultable closestVault = null;
		if (closestVault != null)
        {
			Vaultable[] allVaults = GameObject.FindObjectsOfType<Vaultable>();

			foreach (Vaultable currentVault in allVaults)
			{
				float distanceToVault = (currentVault.transform.position - this.transform.position).sqrMagnitude;
				if (distanceToVault < distanceToClosestVault)
				{
					distanceToClosestVault = distanceToVault;
					closestVault = currentVault;
				}
			}

			rend = closestVault.GetComponent<Renderer>();
			canVault = true;
		}
		else 
        {
			canVault = false;
			return;
        }

The code seems alright to me, but when I try it, even though there is a vaultable object present, it shows canVault = false and the rest of the code doesn’t execute.

Looks like the code editing is messed up so it’s hard to read, but it looks like you’re defining Vaultable closestVault = null; and then if (closestVault != null) which will always be null so that if code will never run.

The rest of your logic looks correct, cycle through the objects and check if its within distanceToVault.
Add some Debug.Log to see what your code is doing.

Alternatively, for a more performant approach, you can use a Physics.OverlapSphere(); as long as your Vaultable objects have a collider which I suspect they do, I covered something like that in this tutorial for finding targets, same logic for finding any type 3 Ways to Find Targets in Unity! (Collider, Physics, Distance) - Code Monkey

@CodeMonkeyYT Thanks a lot, I just had to remove that line of code. Your help is appreciated!