Jump to content
UnitySpain
Sign in to follow this  
Javiher

ANSWERED Limitar el valor de una variable?

Recommended Posts

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

Share this post


Link to post
Share on other sites

Me funciono!!!! Muchas gracias nomoregames, estaba buscando una solución con Mathf pero no la encontraba.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Buenas

francoe ,trato de entender tu script, pero no se para que sirven set, return y get, serias tan amable de explicar el funcionamiento... :100_pray:

Share this post


Link to post
Share on other sites
33 minutes ago, nomoregames said:

Buenas

francoe ,trato de entender tu script, pero no se para que sirven set, return y get, serias tan amable de explicar el funcionamiento... :100_pray:

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.

Edited by francoe1

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...