Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 technano · Feb 28, 2017 at 01:43 AM · uibuttontextdestroyadventure

Destory button on click and other problem

I'm trying to make a text adventure game and it starts off with a normal button to start the adventure, but I want the button to go away as soon as I click it so it's just text showing. I've used the Destroy method but it doesn't do anything. Here is my code:

 using UnityEngine;
 using UnityEngine.UI;
 using System.Collections;
 
 public class AnimatedDialog : MonoBehaviour
 {
     public string [] dialog;
     public float speed = 0.1f;
 
     private Text textArea;
     private bool isSpawned;
     private Button startButton;
 
     int stringIndex = 0;
     int characterIndex = 0;
 
     private void Start ()
     {
         StartCoroutine (DisplayTimer ());
         textArea = GameObject.Find ("Text").GetComponent<Text> ();
         startButton = Button.FindObjectOfType<Button> ();
     }
 
     public void OnClick ()
     {
         if (!isSpawned)
         {
             Instantiate (this, new Vector3 (0f, 0f), Quaternion.identity);
             
             isSpawned = true;
         }
         else
         {
             Destroy (startButton);
             return;
         }
     }
 
     IEnumerator DisplayTimer ()
     {
         while (1 == 1)
         {
             yield return new WaitForSeconds (speed);
             if (characterIndex > dialog [stringIndex].Length)
             {
                 continue;
             }
 
             textArea.text = dialog [stringIndex].Substring (0, characterIndex);
             characterIndex++;
         }
     }
 
     private void Update ()
     {
         if (Input.GetButtonDown("Jump"))
         {
             if(characterIndex < dialog [stringIndex].Length)
             {
                 characterIndex = dialog [stringIndex].Length;
             }
             else if(stringIndex < dialog.Length)
             {
                 stringIndex++;
                 characterIndex = 0;
             }
         }
     }
 }
 

The other problem I'm having is when I press space to make the text go, it makes another instance of the dialog prefab even though I'm not clicking the button anymore, why is this happening? I've tried making a separate script to just destroy the button but it's still there? Is there something I'm missing about the destroy method?

Comment
Add comment · Show 5
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 Vice_Versa · Feb 28, 2017 at 02:28 AM 0
Share

When you do FindObjectOfType your getting an array of start buttons. Try using GameObject.Find() that should get just one of them. Or try tagging them and do FindWithTag(). i think that solves the not destroying problem..

the other problem, line 41 while (1==1) -> Why is that there?

avatar image edcx · Feb 28, 2017 at 07:50 AM 0
Share

Button.FindObjectOfType () Returns the first active loaded object of Button type. So it might not be your start button if you have more than one button in your scene. As @Vice_Versa suggested you can use GameObject.Find(). I am also curious about (1 == 1) but I don't think that it is related to your problem. But your instantiate method is a problem. It clones your current object. And I believe your button has a focus on it. That's why when you press space it clicks the button and your instantiate creates a clone.

avatar image technano · Mar 06, 2017 at 01:40 AM 0
Share

So I've tried using GameObject.Find() and that doesn't seem to make much of a difference. The start button is still there and it's also the only button in the scene. As for the while (1 == 1) everyone's asking about that's there so the dialog will display all the characters of the string.

If anyone could explain to me why the button thinks i'm clicking on it anytime I hit space that would also be nice.

Also I appreciate the explanations for everything as well! Always nice to learn something new!

avatar image edcx technano · Mar 06, 2017 at 07:16 PM 1
Share

Well, after clicking a button, if I press space, it clicks the button and that's because of the navigation of the button. If this is your case, go to your button and change the navigation to something else. It is auto by default. Hope this helps a bit.

avatar image technano edcx · Mar 07, 2017 at 01:37 AM 0
Share

Thank you! this did the trick to keep it from spawning more!

0 Replies

· Add your reply
  • Sort: 

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

107 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

Related Questions

[4.6 - UI] Change text on button click via script 1 Answer

Find GUI Button and Assign Text 1 Answer

UI Scaling with Button Text 1 Answer

Screen scaling causing text to be outside button 0 Answers

Dynamically generate buttons from a single text component 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