• 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 ab4554 · Nov 06, 2014 at 11:27 PM · c#boxcollidermainmenu

How do I make a Main menu screen using an image (asset) and box colliders?

Hi I am making a 2D game using C#. I have art for the main menu screen with two buttons, "Start" and "Quit". I put box colliders around the two buttons. I need to make a code to make the buttons functional. So when you click on the Start button it will load the first level and when you click on Quit, it will quit the game. I know this is simple and i've found millions of tutorials on how to create a main menu using GUI's but I can't find anything on using an image and box colliders. Thank you.

Comment
Add comment · Show 3
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 ab4554 · Nov 06, 2014 at 10:39 PM 0
Share

thank you! But how would i call each seperate box collider to do something different?

avatar image ab4554 · Nov 06, 2014 at 10:55 PM 0
Share

sorry to be annoying but, my buttons are not game objects. They're all in one image that I imported as an asset. I was told I could just add box colliders and put them around each button then make one script for the main menu.

avatar image Itaros · Nov 06, 2014 at 11:41 PM 0
Share

Just child empty game objects with colliders to game object with image. Then attach a script to each other with common interface. Then create a script for camera which will raycast mouse pointer position and pick colliders. Try to

 GetComponent<IYourButtonScriptInterface>()

on resultant colliders and if it exists call the interface method.

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by FairGamesProductions · Nov 07, 2014 at 09:54 AM

Here's what I would do (JS): I create a single script called MouseHoverOverButton:

 var ButtonHoverVar : GameObject;
 
 function OnMouseEnter ()
     {
     ButtonHoverVar.transform.localPosition.y = 1.0;
     }
 
 function OnMouseExit ()
     {
     ButtonHoverVar.transform.localPosition.y = 0.0;
     }

For each button you would have an Empty GameObject. For example for the New Game button an empty gameObject called NewGameButton. You attach the script above to the button objects and add the correct variable (NewGameButton, in this case) to each script. Now you know which button the mouse is over. Then in your GeneralMenuControl script you can do the rest:

 private var NewGameButton : GameObject;
 
 function Start ()
     {
     NewGameButton = GameObject.Find("/Variables/NewGameButton");
     }
 
 function Update ()
     {
     if (NewGameButton.transform.localPosition.y > 0.5 && Input.GetMouseButtonDown(0))
         {
         Application.LoadLevel("New Game");
         }
     //and do the same for the ther buttons
     else if()
         {
         //Do something else...
         }
     else if()
         {
         //do something else...
         }
     }

just to keep things tidy, I keep all my empty GameObjects as children of another empty GameObject called Variables. That way I know where all my GameObject variables are.

Alternatively, if you're using Colliders and Rays, when you get a hit, you can use:

 function Update ()
     {
     var hit = RaycastHit;
     var ray: Ray = camera.ScreenPointToRay(Input.mousePosition);
     if (Physics.Raycast(ray, hit))
         {
         if (hit.Name == "New Game" && Input.GetMouseButtonDown(0))
             {
             Application.LoadLevel("New Game");
             }
         else if (hit.Name == "Options" && Input.GetMouseButtonDown(0))
             {
             //open the options nemu
             }
         else if(....
         }
     }

And you can continue to use hit.name and do the operations needed for each different name that is returned.

And for quit use:

 Application.Quit();

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

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

How do I load the Main Menu when all eneimes are dead? (c#) 0 Answers

I can not figure out The referenced script on this Behaviour (Game Object 'MainMenu') is missing 1 Answer

How can i move the camera smooth like flow up and behind the player when clicking the escape key ? 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