So i have tried doing this :
void Update()
{
if (isWalkingTowards)
{
if (Vector3.Distance(character.transform.position,this.transform.position)<0.7)
{
**StartCoroutine(Example());**
Instantiate(character, new Vector3(-6, 0, -1), Quaternion.identity);
Destroy(character);
}
}
}
**IEnumerator Example()
{
yield return new WaitForSecondsRealtime(5);
Debug.Log("This function should be read before it is instantiated or destroyed");
}**
But it just instantiates and destroys object and after that it shows me that message!
I should have done this:
void Update()
{
if (isWalkingTowards)
{
if (Vector3.Distance(character.transform.position,this.transform.position)<0.7)
{
**StartCoroutine(Example());**
}
}
}
**IEnumerator Example()
{
yield return new WaitForSecondsRealtime(5);
Debug.Log("This function should be read before it is instantiated or destroyed");
Instantiate(character, new Vector3(-6, 0, -1), Quaternion.identity);
Destroy(character);
}**
Here is a super helpful link on a bunch of ways to wait in unity: How to make the script wait/sleep in a simple way in unity
Also, I think the issue you're currently running into is that the code won't wait for StartCoroutine(Exmaple()) to finish. You have to put the code you want to execute before and after in Example.