Просто проверьте, существует ли gameObject:
GameObject powerUpGo = GameObject.FindObjectWithTag("Fuel");
if( powerUpGo != null )
{
myPowerUp = powerUpGo .GetComponent<AddFuel>() ;
}
Затем при добавлении условия перед использованием myPowerUp
:
if( myPowerUp != null )
{
// Do something with myPowerUp
}
В противном случае, я просто советую вам иметь прямую сериализованную ссылку на ваш объект в инспекторе, чтобы вы могли просто иметь нулевую проверку, когда вам нужно включение (и вам больше не нужно будет звонить Find
)
[SerializeField]
private AddFuel myPowerUp ; // Drag & drop the object in the inspector
// ...
if( myPowerUp != null )
{
// Do something with myPowerUp
}
Последняя возможность, о которой я могу подумать, но требуя гораздо больше «ручной» работы, добавьте логическое значение, которое вы будете проверять в инспекторе в соответствии со сценой, в которой вы находитесь.
[SerializeField]
private bool powerUpExists; // Check / uncheck it in the inspector according to the scene you are working in
// ...
if (!powerUpExists)
{
return;
}
else
{
myPowerUp = GameObject.FindObjectWithTag("Fuel").GetComponent<AddFuel>()
}