Question by
stupidblizzard2 · Nov 17, 2019 at 10:10 PM ·
scriptingbasicstimer countdowntimer-script
How do I stop my timer script from crashing unity?
So, I tried to make an easily accessible and reusable timer script. But every time I use the CountDown function I made the game crashes. However, the scripts themselves don't give me any errors so I'm very confused as to what's going on. Here's the code:
Timer Script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class Timer : MonoBehaviour
{
public Text TimerText;
private float TimerNumber = 1;
private float StartTime;
private float time;
private bool Finished = false;
public bool TimerDone = false;
private bool countingDown;
void Awake()
{
TimerText.enabled = false;
}
void Start()
{
StartTime = Time.time;
}
void Update()
{
float time = Time.time - StartTime;
}
public void CountDown(float countDownFrom)
{
TimerDone = false;
TimerText.enabled = true;
countingDown = true;
while(countingDown == true)
{
TimerNumber = countDownFrom - time;
string Seconds = ((int)TimerNumber).ToString();
TimerText.text = Seconds;
if (TimerNumber == 0)
{
countingDown = false;
Finished = true;
TimerText.enabled = false;
TimerNumber = 1;
}
}
if (Finished == true)
{
Finished = false;
TimerDone = true;
}
}
}
The script that I'm trying to access it from:
using UnityEngine;
public class TurnChanger : MonoBehaviour
{
public GameObject TimerBlock;
private Timer timer;
void Awake()
{
timer = TimerBlock.GetComponent<Timer>();
}
void Update()
{
#region TestConponents
if (Input.GetKeyDown("1"))
{
timer.CountDown(10);
}
if (timer.TimerDone == true)
{
print("The Timer is finished");
}
#endregion
}
I only included the part of the script that has to do with the Timer but here's the whole thing just in case:
using UnityEngine;
public class TurnChanger : MonoBehaviour
{
public bool GameStart = false;
public bool GamePlaying = false;
public GameObject GameManger;
public CardCreation cardCreateionScript;
public GameObject DeckSlot;
public GameObject TeleportingCard;
public Vector3 Displacement;
public int randomCardNumber;
private int indexNumber = 0;
private int indexNumber2 = 0;
public float yDisplacementRate;
public int numberOfStartingCards;
private int numberOfDrawnCards = 0;
public GameObject TimerBlock;
private Timer timer;
void Awake()
{
timer = TimerBlock.GetComponent<Timer>();
cardCreateionScript = GameManger.GetComponent<CardCreation>();
}
void Update()
{
randomCardNumber = Random.Range(0, cardCreateionScript.YourDeck.Count - 1);
#region TestConponents
if (Input.GetKeyDown("1"))
{
timer.CountDown(10);
}
if (timer.TimerDone == true)
{
print("The Timer is finished");
}
if (Input.GetKeyDown("space"))
{
GameStart = true;
print("Game Started!");
}
#endregion
if (GameStart == true)
{
GameStart = false;
GamePlaying = true;
StartGame();
}
}
public void StartGame()
{
print("Game Playing!");
BuildDeck();
if(BuildDeck() == true)
{
DrawHand();
if(DrawHand() == true)
{
StartTurn();
}
}
}
public bool BuildDeck()
{
print("Building The Deck");
while (indexNumber != cardCreateionScript.YourDeck.Count) {
TeleportingCard = cardCreateionScript.YourDeck[indexNumber];
TeleportingCard.GetComponent<Transform>().position = DeckSlot.GetComponent<Transform>().position + Displacement;
Displacement.y += yDisplacementRate;
indexNumber = indexNumber + 1;
}
indexNumber = 0;
return true;
}
public bool DrawHand()
{
print("Drawing Your Hand");
while(numberOfDrawnCards != numberOfStartingCards)
{
if(cardCreateionScript.YourHand[indexNumber2].GetComponent<HandSlot>().open == true)
{
cardCreateionScript.YourHand[indexNumber2].GetComponent<HandSlot>().card = cardCreateionScript.YourDeck[randomCardNumber];
cardCreateionScript.YourDeck.RemoveAt(randomCardNumber);
numberOfDrawnCards = numberOfDrawnCards + 1;
print("Drew " + numberOfDrawnCards + " Cards");
indexNumber2 = indexNumber2 + 1;
print("Added To IndexNumber2");
if (indexNumber2 == numberOfStartingCards - 1)
{
break;
}
}
}
return true;
}
public bool StartTurn()
{
print("Starting Your Turn");
return true;
}
}
Comment
Your answer
Follow this Question
Related Questions
Problems showing accurate time with FixedUpdate() 0 Answers
My countdown timer doesn't work,I'm trying to create a countdown timer 0 Answers
How do I create a timer. 1 Answer
How do I switch scenes with countdown timer and Score at the same time 0 Answers
Allow player to Press Input.GetKeyDown once per update ? 0 Answers