0
\$\begingroup\$

In the update, I have set up a counter so that after 140 frames, Unity will quit the game. But this quit command doesn't quit and it just continues to play the game. What am I doing wrong? I am using and testing in Unity 2D. There are no errors and all the prints are visible.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Normal_Car : MonoBehaviour
{
    private int counter = 0;

    public Vector3 finalPos = new Vector3(0.00f,0.00f,0.00f);

    public Transform t;

    // Start is called before the first frame update
    void Start()
    {
        t.GetComponent<Transform>();
    }

    // Update is called once per frame
    void Update()
    {
        print("Frame: " + counter.ToString());
        counter += 1;
        t.position += finalPos;
        if(counter >= 140)
        {
            Application.Quit();
            print("Quit!");
        }
    }
}
\$\endgroup\$
  • 2
    \$\begingroup\$ What do you mean by "doesn't work"? Your build crashes? Shows errors? It does something else? It does nothing? Is the print output visible? Are you testing this inside the editor or in a build? \$\endgroup\$ – Tyyppi_77 Oct 24 at 16:44
  • \$\begingroup\$ Your edit only adresses part of my questions. Where are you testing this? Are the print outputs visible? Are there any errors? \$\endgroup\$ – Tyyppi_77 Oct 24 at 17:08
  • \$\begingroup\$ I am testing in Unity and there are no errors. All the prints are visible. \$\endgroup\$ – DragonflyRobotics Oct 24 at 17:19
1
\$\begingroup\$

If you check out the documentation for Application.Quit it starts by saying this:

Quits the player application. Shut down the running application. The Application.Quit call is ignored in the Editor.

Application.Quit does nothing if you test inside the editor.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Okay, then is there any other way to text this without having to export something every time? Thank you for helping. \$\endgroup\$ – DragonflyRobotics Oct 24 at 18:04
  • \$\begingroup\$ Test what? Test the Application.Quit() implementation? Is it not enough to for an example debug log something before calling Application.Quit() and verifying that it is output correctly? Also a quick googling of "unity stop editor" yields this among other things: answers.unity.com/questions/161858/… if you want to stop the editor playing instead. \$\endgroup\$ – Tyyppi_77 Oct 24 at 18:20
  • \$\begingroup\$ Yes, I meant to stop the editor as a place holder for testing my game. \$\endgroup\$ – DragonflyRobotics Oct 24 at 20:25
-1
\$\begingroup\$

I think it's this.Quit(); That might just be in WinForms though :)

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ "I think" — did you try researching or testing this suggestion to have more confidence that it applies in Unity? \$\endgroup\$ – DMGregory Oct 25 at 12:22
  • \$\begingroup\$ @DMGregory I was following a tutorial for WinForms and he said 'do this.quit(); to make a quit button' \$\endgroup\$ – Busaruba2011 Oct 25 at 12:34
  • \$\begingroup\$ Is this question about WinForms? \$\endgroup\$ – DMGregory Oct 25 at 12:34
  • \$\begingroup\$ No, but WinForms uses C# and unity uses that too. \$\endgroup\$ – Busaruba2011 Oct 25 at 12:39
  • \$\begingroup\$ this refers the the current object, the object of the class that owns the code where this is written. this will mean a different object depending on where it is written. You might want to read up a bit more on the topic. \$\endgroup\$ – Vaillancourt Oct 25 at 13:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.