Hola buenas
Como puedo limitar el valor que puede almacenar una variable? Tengo una de tipo float y quiero hacer que no pase del valor 1, en otras partes del script le asigno valores y en una de esas partes este valor es mas grande que uno, pero yo no quiero que pase mas allá del valor que quiero.
Gracias
Buenas tardes Javiher
Probaste a usar Mathf.Clamp?
float num = Mathf.Clamp(num,0,1);
https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html (https://docs.unity3d.com/ScriptReference/Mathf.Clamp.html)
Me funciono!!!! Muchas gracias nomoregames, estaba buscando una solución con Mathf pero no la encontraba.
El uso de Mathf.Clamp es correcto, pero si vas a asignar la variable desde múltiples lugares te recomiendo utilizar propiedades.
private float m_value = 0;
public float Value { get {return m_value;} set { m_value = Mathf.Clamp(m_value, 0, 1);} }
De este modo cada vez que asignes
Value se va a aplicar la limitación.
Buenas
francoe ,trato de entender tu script, pero no se para que sirven set, return y get, serias tan amable de explicar el funcionamiento...
Cita de: nomoregames date=1581197261Buenas
francoe ,trato de entender tu script, pero no se para que sirven set, return y get, serias tan amable de explicar el funcionamiento...
Un
campo es una variable que se declara directamente en una clase o estructura. Una clase o estructura puede tener campos de instancia o campos estáticos o ambos. En general, debe usar campos solo para variables que tengan accesibilidad privada o protegida . Los datos que su clase expone al código del cliente se deben proporcionar a través de métodos, propiedades e indexadores. Al utilizar estas construcciones para el acceso indirecto a los campos internos, puede protegerse contra valores de entrada no válidos.
Ejemplo
public class MiClase
{
public float MiCampo = 0;
}
Una
propiedad es un miembro que proporciona un mecanismo flexible para leer, escribir o calcular el valor de un campo privado. Las propiedades se pueden usar como si fueran miembros de datos públicos, pero en realidad son métodos especiales llamados accesores . Esto permite acceder fácilmente a los datos y aún así ayuda a promover la seguridad y flexibilidad de los métodos . Las propiedades permiten que una clase exponga una forma pública de obtener y establecer valores, al tiempo que oculta el código de implementación o verificación. Se utiliza un descriptor de acceso de propiedad get para devolver el valor de la propiedad, y un descriptor de acceso set se utiliza para asignar un nuevo valor.
Ejemplo
public class MiClase
{
private float m_miPropiedadValue = 0;
public float MiPropiedadBidireccional { get; set;}
public float MiPropiedadUnidireccionalGET { get { return m_miPropiedadValue; } }
public float MiPropiedadUnidireccionalSET { set { m_miPropiedadValue = value; } } //VALUE es el valor que se le esta asignando a una variable.
}
Entonces podemos decir que un campo es la forma de representar libremente una variable. Mientras que una propiedad es un forma de enmascarar un campo o valor, las propiedades tambien se pueden utilizar para realizar cálculos u otra combinación de información.
Ejemplo
public class PlayerStatistics
{
public int Defense;
public int Attack;
public int Velocity;
public int Range { get { return (Defense + Attack + Veloctiy) / 3; } }
//Desde la versión 4.7 de C# se pueden utilzar las arrow propertys
//La desventaja es que solo son para propiedades de solo lectura.
public int Range => (Defense + Attack + Veloctiy) / 3;
}
Aparte de esta explicaciones básica existe diferencias en el
MSIL pero esto ya es más técnico.