Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by doodely · Jul 16, 2020 at 02:53 PM · invoke

Invoke not working,invoke not working

Hello, im trying to learn coding using this guide: https://www.youtube.com/watch?v=VbZ9_C4-Qbo

he uses invoke to have a delay between losing and restarting the game, but for some reason my code doesnt work. I cant seem to find the error and i dont get an error in the unity console.

This is my code:

using UnityEngine; using UnityEngine.SceneManagement;

public class Gamemanager : MonoBehaviour {

 bool gameHasEnded = false;

 public float restartDelay = 1f;

 public GameObject completeLevelUI;

 public void CompleteLevel()
 {
     completeLevelUI.SetActive(true);
 }

 public void EndGame()
 {
     if (gameHasEnded == false)
     {
         gameHasEnded = true;
         Debug.Log("GAME OVER");
         Invoke("Restart", restartDelay);
     }
 }

 void Restart()
 {
     SceneManager.LoadScene(SceneManager.GetActiveScene().name);
 }

} ,Hello, im currently trying to learn to code in unity. I am using this guide:https://www.youtube.com/watch?v=VbZ9_C4-Qbo

and he uses invoke as a method to have a delay between losing the game, and the game restarting. But the invoke doesnt work for me. I am sure that i have written it right, but you never know.

This is my code:

using UnityEngine; using UnityEngine.SceneManagement;

public class Gamemanager : MonoBehaviour {

 bool gameHasEnded = false;

 public float restartDelay = 1f;

 public GameObject completeLevelUI;

 public void CompleteLevel()
 {
     completeLevelUI.SetActive(true);
 }

 public void EndGame()
 {
     if (gameHasEnded == false)
     {
         gameHasEnded = true;
         Debug.Log("GAME OVER");
         Invoke("Restart", restartDelay);
     }
 }

 void Restart()
 {
     SceneManager.LoadScene(SceneManager.GetActiveScene().name);
 }

}

Comment
Add comment · Show 3
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image andrew-lukasik · Jul 16, 2020 at 02:47 PM 1
Share

tiny protip: write nameof(Restart) ins$$anonymous$$d of "Restart".

I.e.: Invoke( nameof(Restart) , restartDelay );

avatar image andrew-lukasik · Jul 16, 2020 at 02:53 PM 0
Share

Try this, so you know if Restart is being called and what scene is being actually loaded:

 void Restart ()
 {
     string activeSceneName = Scene$$anonymous$$anager.GetActiveScene().name;
     Debug.Log($"{nameof(Restart)}() called. Loading '{activeSceneName }' now");
     Scene$$anonymous$$anager.LoadScene( activeSceneName );
  }
avatar image jemules · Jul 16, 2020 at 06:48 PM 0
Share

you accidentally duplicated your message

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by Nascapit · Jul 16, 2020 at 09:57 PM

Hi, I have not used invoking methods by it's name before. According to Unity documentation, it's better to use coroutines for something like this. (The documentation might be confusing so you might wanna look up a video on this)

https://docs.unity3d.com/Manual/BestPracticeUnderstandingPerformanceInUnity3.html

With coroutines you can stop the execution and resume it later.

Your code with a coroutine would look like this:

 public IEnumerator Restart(float f)
     {
         yield return new WaitForSeconds(f);
         SceneManager.LoadScene(SceneManager.GetActiveScene().name);
     }

and then the call:

 StartCoroutine(Restart(restartDelay));
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by huseyinbaba58 · Jul 16, 2020 at 08:18 PM

You should use StartCoroutine(IEnumerator stuff).

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

133 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Is it possible to change Invoke Repeating rate on the fly? 3 Answers

What is the difference between InvokeRepeating & Invoke and how can they be used? 1 Answer

[SOLVED]Destroy gameObject, not OnCollisionEnter but after a while 1 Answer

Making Enemy Retreat 1 Answer

Issue with starting/canceling invokes 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges