- Home /
did not QUIT when the Time is over ...?
my game did not QUIT when the time is over ? please help me ..
private var startTime;
private var restSeconds : int;
private var roundedRestSeconds : int;
private var displaySeconds : int;
private var displayMinutes : int;
var customButton : GUIStyle;
public var countDownSeconds : int;
public var timed;
function Awake() {
startTime = Time.time;
}
function OnGUI () {
//make sure that your time is based on when this script was first called
//instead of when your game started
var guiTime = Time.time - startTime;
restSeconds = countDownSeconds - (guiTime);
//display messages or whatever here -->do stuff based on your timer
if (restSeconds == 60) {
print ("One Minute Left");
}
if (restSeconds == 0) {
print ("Time is Over");
Application.Quit();
}
//GUILayout.EndArea();
//do stuff here
//display the timer
roundedRestSeconds = Mathf.CeilToInt(restSeconds);
displaySeconds = roundedRestSeconds % 60;
displayMinutes = roundedRestSeconds / 60;
timed =String.Format ("{0:00}:{1:00}", displayMinutes, displaySeconds);
//print(timed);
text = String.Format ("{0:00}:{1:00}", displayMinutes, displaySeconds);
GUI.Label (Rect (300, 25, 100, 30), text, customButton);
}
Answer by Bunny83 · Sep 10, 2011 at 11:16 AM
Application.Quit doesn't work in the editor. When you create a build everything should work as expected.
You can do it like this:
if (restSeconds <= 0) {
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#endif
Application.Quit();
}
This will stop the playmode in the editor. The pre-processor tags: "#if UNITY_EDITOR" and "#endif" are important otherwise you can't create a build anymore ;). The #if block excludes the containing code when you create a build so it's only included inside the editor.
I'm looking to achieve something similar to larrielyn, but I'm wanting to end the game once I've entered a trigger. Is the script you have used Javascript, because I'm not familiar with "#" commands in java, but I am very new to coding. Thanks in advance for your help.
It did work, but I would just like some explanation as to why if it's not too much trouble.
@ztriv I'll quickly correct before someone else catches you. What you use is not Java - which is a different language - but an implementation of what could be called JavaScript. As for the # commands, they're called preprocessor directives, they're language independant and they're used to give indication to the compiler. In this case, the compiler will completely ignore the line between the #if#endif if the application is not in the Editor (just like the lines didn't exist).
oh, ok thanks for explaining that to me, becuase I didn't recognize those commands because I haven't learned this coding language yet, I've been trying to use Java. Which by the way is apparently very similar to javascript,lol. And I believe I understand the preprocessor tags a little better now.
Java is not similar to Javascript, it's a quite different language. Unity doesn't use Java (or Javascript for that matter--it's a custom language, often called Unityscript, but frequently called Javascript by Unity Technologies, which doesn't do anyone any favors).
Your answer
Follow this Question
Related Questions
Accumulating deltaTime oddity 1 Answer
How to make a timer read to the .001 of a second 2 Answers
Minute Timer Issue 1 Answer
Time based scoring 2 Answers