Somehow, element1 in the array is skipped over, but the others load in correctly.
unityEventRef = sequenctialEvents[eventArrayPos];
elapsedTime += Time.deltaTime;
if (eventincremented == true || elapsedTime >= 5)
{
elapsedTime = 0;
if (eventArrayPos >= sequenctialEvents.Length - 1)
{
eventArrayPos = 0;
}
else
{
eventArrayPos += 1;
}
unityEventRef.Invoke();
Debug.Log(eventArrayPos);
eventincremented = false;
}
Did you mean that element[1] is skipped or element[0] is skipped? The way you have coded this, pos starts at 0 but gets incremented before you call element[0]. I’ve simplified your code to test it and this works fine:
using UnityEngine;
using UnityEngine.Events;
public class Temp : MonoBehaviour
{
public UnityEvent[] seqEvents = new UnityEvent[3];
int pos = 0;
float elapsedTime = 0;
private void Update()
{
elapsedTime += Time.deltaTime;
if (elapsedTime >= 2)
{
Debug.Log(pos);
seqEvents[pos].Invoke();
elapsedTime = 0;
if (pos >= seqEvents.Length - 1)
{
pos = 0;
}
else
{
pos += 1;
}
}
}
public void Event1()
{
print("Event 0");
}
public void Event2()
{
print("Event 1");
}
public void Event3()
{
print("Event 2");
}
}
You’ll need to reinstate your test for eventIncremented but I think this works fine now.