Cuando uso float.IsFinite(float f) en un shell de C#, no tengo problemas. Sin embargo, cuando lo uso en el contexto de Unity, aparece un error que dice que no está definido:
Aquí está el código relevante:
public static bool IsFinite(Unit u) => float.IsFinite(u.blocks); Unit es una estructura en la que escribí la línea anterior.
Mi pregunta es: ¿por qué aparece este error y cómo puedo solucionarlo?
float.IsFinite existe en .NET 5, .NET Standard 2.1 y .NET Core 2.1. Sin embargo, Unity no admite ninguno de esos marcos, solo .NET Standard 2.0. Es por eso que no puede usar la función aquí.
Sin embargo, es fácil crear una solución para la falta de esa función:
public static bool IsFinite(Unit u) => !float.IsInfinity(u.blocks)Hay una discusión en curso en el foro de soporte de Unity sobre .NET 5