- Home /
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.
Answer by CodeMonkeyYT · Apr 18 at 07:14 PM
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 https://unitycodemonkey.com/video.php?v=h9oEhVqGptU
@CodeMonkeyYT Thanks a lot, I just had to remove that line of code. Your help is appreciated!
Your answer
Follow this Question
Related Questions
Array containing destroyed object = Null? 1 Answer
Find if no objects with tag exist 3 Answers
Checking for null elements in a subset? 1 Answer
How do I stop a function from executing? 1 Answer
Check if Array.GetValue(i) is null 1 Answer