Jump to content
Null

[Ayuda] Variable no se actualiza correctamente (CustomEditor)

Recommended Posts

Supongamos que tengo el siguiente código que controla la variable vida de un enemigo:

public class EnemyHealth : MonoBehaviour {
  	float currentHealth;
	float amount      = .5f;
	float maxHealth = 100;
  
	public float CurrentHealth { get { return currentHealth; } set { currentHealth = value; } }
  
	void Update() {
  		if (currentHealth <   maxHealth) currentHealth += Time.deltaTime * amount;
  		if (currentHealth >= maxHealth) currentHealth   = maxHealth;
  		if (currentHealth <= 0f)               currentHealth   = 0f;
	}
}

Y también tengo este CustomEditor:

[CustomEditor(typeof(EnemyHealth))]
public class EnemyHealthEditor : Editor {
  	
  	public override void OnInspectorGUI() {
     	
      	EnemyHealth enemyHealth  = (EnemyHealth)target;
      	enemyHealth.CurrentHealth = EditorGUILayout.FloatField("Health", enemyHealth.CurrentHealth); 
    }
}

El problema que tengo es que la variable (en el inspector) no se actualiza cuando es < maxHealth, tal como indica su código... Si por ejemplo le pongo el valor 55 en el inspector, vuelve a 0, sin actualizarse.
Antes de haber escrito el CustomEditor, simplemente tenía la variable en public y se actualizaba bien.
Peor aún: He notado que si pongo el mouse encima del inspector (sin hacer clicks de ningún tipo), y lo muevo hacia otra ventana de Unity, sí se actualiza... (?)

>>> Vídeo de muestra (nótese que no estoy haciendo dragging)

Cómo lo soluciono? :4_joy:

Edited by Null
Error de escritura!

Share this post


Link to post
Share on other sites

debes colocar [SerializedField] a currentHealt o en su defecto hacerla publica, para que unity pueda serializarla y usar su valor desde el inspector, y si no estoy mal deberias colocar esto antes de terminar el OnInspectoGUI , https://pastebin.com/Ym4FZsJn (la herramienta de colocar codigo en el post no me funciona?), ya que si no lo haces podrias perder los cambios cada vez que cambies de scena todo depende de si estas usando estu en un prefab o un objeto de scena, en fin todo esto son cosas que hace unity sin darnos cuenta pero que debmos manejar nosotros mismos al usar codigo del editor

 

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...