I didn't find anything on the net, so maybe I just overlook something. I wrote an OnEnabledDo script that executes an UnityEvent when triggered. This works nice and dandy... until I execute the same function on two similar scripts on one GameObj, e.g. calling AddItemToInventory.Add() in two components. Like this: Code (CSharp): namespace Freeman { public class AddItemToInventory : MonoBehaviour { public ItemData itemData; public float waitTimeBeforeAdd; DialogHandler dialogHandler; // just to execute the coroutine here, because this node might be disabled before wait time ends. public void AddItem() { if (!enabled) return; if (dialogHandler) dialogHandler.StartCoroutine(CoAdd()); else StartCoroutine(CoAdd()); } void Awake() { dialogHandler = GetComponentInParent<DialogHandler>(); } void Start() { // allows to disable component } IEnumerator CoAdd() { // yield return new WaitForSeconds(waitTimeBeforeAdd); Inventory.me.CreateAndAddItem(itemData); InfoText.me.ShowText("You received " + itemData.itemName); } } } used like this: If I do this, only the first AddItem() is executed.