- Home /
On Void Called
Is there any method for detect if certain void called? Example, in lua scripting you can put some bindable event and fire them when needed. Scripts can understand if bindable events are called.
So I want to do something like this :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
private float Health = 100;
public event OnHealthChanged;
public class AI : MonoBehaviour
{
public void TakeDamage(dmg) {
Health -= dmg;
OnHealthChanged:Fire()
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public AI _ai;
public event OnHealthChanged;
public class Blood : MonoBehaviour
{
void Start() {
AI = GetComponent<AI>();
OnHealthChanged = AI.OnHealthChanged;
}
void OnHealthChanged () {
print("dmg");
}
}
Answer by Hellium · Nov 18, 2018 at 04:07 PM
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AI : MonoBehaviour
{
private float Health = 100;
public event System.Action<float> OnHealthChanged;
public void TakeDamage( float damage )
{
Health = Mathf.Max( Health - damage, 0 ) ; // Make sure Health is greater or equal to 0
if( OnHealthChanged != null )
OnHealthChanged( Health );
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Blood : MonoBehaviour
{
private AI _ai;
void Start()
{
_ai = GetComponent<AI>();
_ai.OnHealthChanged += OnHealthChanged ;
}
void OnHealthChanged ( float Health )
{
print( "Health of AI = " + Health );
}
}
Answer by JVene · Nov 18, 2018 at 04:16 PM
From this example I can't tell if you really need an event or a delegate (they are related concepts). That said, the details of declaration and usage differ from the example you posted, but the result is similar. You'll just need to refer to the documentation on delegates and events. I sense you would use a delegate for the situation you describe. One primary difference between what you've posted and what is required is that you should test to see if the variable representing the delegate or event is null before calling it.
Your answer
Follow this Question
Related Questions
IPointerClickHandler works until I add IPointerDownHandler 0 Answers
Issues implementing UI event triggers via script 1 Answer
Hide/show UI Button and trigger the OnPointerDown event ?! 0 Answers
How to create a custom "On..." method? 2 Answers
How to drag gameobjects (other than ui elements) using the event trigger? 2 Answers