Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 stevecus · Jul 09, 2014 at 10:17 AM · guibutton

How can I create an RTS style build function into my GUI

Hello,

I have set up a GUI in my game in that when I select a building slot a GUI pops up, I can then click on the building I want and it builds there. What I would like is that when you click it displays a timer in a transparent colour wheel, much like many command and conquer type games, then when finished show some text to say ready, allow me to click the button and then instantiate into the scene. I use a texture "_Cutout" effect for my health bars, could I use the same thing or is there a better way? I am also looking at having it enter a ready texture when finished so the user can then just click to deploy if that be done the same way.

Heres some of my code;

 //GUI
 
     void OnGUI()
     {
 
 
         //TURRET GUI BAR
 //---------------------------------------------------------------------------------------------------------------------------
 
         
 
         GUI.Box (new Rect (Screen.width - 200,0,200,200), "miniMap");
         if(TurretMenuOpen == true)
         {
             GUI.Box (new Rect (Screen.width - 600,Screen.height - 120,600,120), "BuildMenu");
 
             if(GUI.Button (new Rect (Screen.width - 300,Screen.height - 100,100,100), Inf_Gun, guiStyle))
                 {
                 Debug.Log("Clicked the button with INF");
                 //clicked button
                 if(Input.GetMouseButtonUp(0))
                 {
 
                     if(SelectedObj.tag == "Placement_Open")
                     {
                         GameObject NewTurret = Instantiate (buildings[0], SelectedObj.transform.position, SelectedObj.transform.rotation) as GameObject;
                         audio.PlayOneShot(a_Building);
                         SelectedObj.tag = "Placement_Closed";
 
                     } else {
 
                         audio.PlayOneShot(a_CantDeploy);
 
                     }
                 }
             
             }
         
 
             if(GUI.Button (new Rect (Screen.width - 400,Screen.height - 100,100,100), Tank_Gun, guiStyle))
             {
             Debug.Log("Clicked the button with TANK");
 
                 if(Input.GetMouseButtonUp(0))
                 {
                 
                     if(SelectedObj.tag == "Placement_Open")
                     {
                     GameObject NewTurret = Instantiate (buildings[1], SelectedObj.transform.position, SelectedObj.transform.rotation) as GameObject;
                     audio.PlayOneShot(a_Building);
                         SelectedObj.tag = "Placement_Closed";
                     
                     }else {
                         
                         audio.PlayOneShot(a_CantDeploy);
                     }
                 }
             
                 }    
             if(GUI.Button (new Rect (Screen.width - 500,Screen.height - 100,100,100), Air_Gun, guiStyle))
             {
             Debug.Log("Clicked the button with AIR");
     
                 if(Input.GetMouseButtonUp(0))
                 {
                     
                     if(SelectedObj.tag == "Placement_Open")
                     {
                         GUI.DrawTexture(new Rect (Screen.width - 500,Screen.height - 100,100,100 * progressAmount), progressBar);
                         GameObject NewTurret = Instantiate (buildings[2], SelectedObj.transform.position, SelectedObj.transform.rotation) as GameObject;
                         audio.PlayOneShot(a_Building);
                         SelectedObj.tag = "Placement_Closed";
                         
                     }else {
                         
                         audio.PlayOneShot(a_CantDeploy);
                     }
                 }
                 
             }    
         }
 
 //---------------------------------------------------------------------------------------------------------------------------
     }
 


I tried to get the effect using GUI.texture but nothing happened, I deleted it but I'll retype something along the same lines;

 void OnGUI()
     {
 
 
         //TURRET GUI BAR
 //---------------------------------------------------------------------------------------------------------------------------
 
 
         GUI.Box (new Rect (Screen.width - 200,0,200,200), "miniMap");
         if(TurretMenuOpen == true)
         {
             GUI.Box (new Rect (Screen.width - 600,Screen.height - 120,600,120), "BuildMenu");
 
             if(GUI.Button (new Rect (Screen.width - 300,Screen.height - 100,100,100), Inf_Gun, guiStyle))
                 {
                 Debug.Log("Clicked the button with INF");
                 //clicked button
                 if(Input.GetMouseButtonUp(0))
                 {
                     if(!coolDown)
                     {
                             coolDown = true;
                             startTime = Time.time;
                     }
                     else
                     {
                         GUI.DrawTexture(new Rect(Screen.width - 300, Screen.height - 100,100,100 * coolDownTimer() ), coolDownTex); //Texture that is applied over top
                     }
                     if(Input.GetMouseButtonUp(0))
                     {
                         if(SelectedObj.tag == "Placement_Open")
                         {
                             GameObject NewTurret = Instantiate (buildings[0], SelectedObj.transform.position, SelectedObj.transform.rotation) as GameObject;
                             audio.PlayOneShot(a_Building);
                             SelectedObj.tag = "Placement_Closed";
 
                         } else {
 
                             audio.PlayOneShot(a_CantDeploy);
 
                         }
                     }
                 }
             
             }

}

Helper function and parameters;

 public float coolDownTimer()
 {
         float coolDownPercent = 0.5f;
         if(coolDownPercent <=0)
             coolDown = false;
         return coolDownPercent;
     
 }
 
 public bool coolDown;
 public float startTime;
 public Texture coolDownTex;
 public Texture buildingReadyTexture;

I've not been coding long so apologies if this is sacrilege to all you programmers out there,

Thanks in advance,

Steve.

Comment
Add comment
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

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

2 People are following this question.

avatar image avatar image

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

GUI.Textfield backspace control + Button Style problem 0 Answers

Getting almost nowhere with my buttondrag script 1 Answer

GUI Scripting button controls 1 Answer

Cases if a GUI.Button is clicked two or more times?? 2 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