- Home /
How to restrict a button for a second
I know I kind of asked this question one time, but no-one answered me correctly. Firstly Heres my script
var targetScript : ChangeSprite;
var AcceptInput : boolean = true;
private static var score : int = 0;
var guiScore : GUIText;
function Start ()
{
guiScore.text = "Score: 0";
}
function OnMouseDown () {
if(!AcceptInput)
{
return;
}
AcceptInput = false;
targetScript = GameObject.Find("Shape").GetComponent(ChangeSprite);
GameObject.Find("Shape").GetComponent(ChangeSprite).enabled = true;
Debug.Log("Clicked");
if(targetScript.spriteRenderer.sprite == targetScript.diamond) {
AcceptInput = true;
score += 1;
guiScore.text = "Score: " + score;
}
else{
Debug.Log("Wrong Answer!");
}
}
function OnMouseUp () {
AcceptInput = true;
GameObject.Find("Shape").GetComponent(ChangeSprite).enabled = false;
}
and the script that is being enabled :
var diamond : Sprite;
var circle : Sprite;
var triangle : Sprite;
var square : Sprite;
var number : int;
var spriteRenderer : SpriteRenderer;
function OnEnable() {
spriteRenderer = gameObject.GetComponent(SpriteRenderer);
number = Random.Range(1,5);
if(number == 1) {
spriteRenderer.sprite = diamond;
}
else if(number == 2) {
spriteRenderer.sprite = circle;
}
else if (number == 3) {
spriteRenderer.sprite = triangle;
}
else {
spriteRenderer.sprite = square;
}
}
function OnEnable() {
spriteRenderer = gameObject.GetComponent(SpriteRenderer);
number = Random.Range(1,5);
if(number == 1) {
spriteRenderer.sprite = diamond;
}
else if(number == 2) {
spriteRenderer.sprite = circle;
}
else if (number == 3) {
spriteRenderer.sprite = triangle;
}
else {
spriteRenderer.sprite = square;
}
}
What the script does is OnMouseDown, it enables a disabled script which changes an object's sprite. And if the sprite is the correct answer, it would add a score. If not, Debug.Log("wrong Answer!") I used the accept input thing because if I don't it would play through the sprites non stop because the script wouldn't be disabled. But the thing is, if I press the button, it would add the score before the sprite would even be displayed on the screen, so I want to make a restriction so that you can only press the button and the button can only work when the actual sprite is displayed. Does anyone have any Real ideas? Thank You
You're question is difficult to understand.
But if I'm getting you right you just want delayed functionality. One way to do this is to use a coroutine and wait. Another is to use Invoke
I tried WaitForSeconds but didn't really work. I want it to be the button only works when the sprite is displayed. Currently, the score is adding before the sprite is displayed. @Bored$$anonymous$$ormon
Answer by kannan21 · Aug 08, 2014 at 06:36 AM
Change OnEnable function to Start.
Isn't it the same? since the script is going to be disabled after the On$$anonymous$$ouseUp
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Multiple choice game not working!?! 1 Answer
Script behaving too early 1 Answer
Nested Functions 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers