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 No_Username_Found · Jun 28, 2014 at 05:07 AM · guibuttonscrollview

Make button inside ScrollView move when ScrollView scrolls

I want to place a button within a ScrollView and have it move as the ScrollView changes. Currently I have the buttons placed, but they do not move when the scrollview changes, though the rest of the contents do.

     private Vector2 scrollPositionSchematics = new Vector2(0,0);
     private GUIStyle style = new GUIStyle ();
     private Objtect[] schematicsArray = Resources.LoadAll ("Prefabs/Rooms");
 
     //Handles the HUD-GUI
     void OnGUI(){
 
         /*-----------------------------------------------------------------------------------------
          * 
          * Create the frame and contents for the HUD(Schematic) area
          * 
          *---------------------------------------------------------------------------------------*/
         HUDWindow ("Schematic",    //text to display in the header
                    19,            //size of the font
                    (int) Mathf.Floor(Screen.width/3*2),            //positionX
                    (int) Mathf.Floor(Screen.height/5*4),            //positionY
                    (int) Mathf.Floor(Screen.width/3),    //xSize
                    (int) Mathf.Floor(Screen.height/5)    //ySize
                    );
 
         //Display text for HUDWindow(Function)
         GUILayout.BeginArea (new Rect ((int) Mathf.Floor(Screen.width/3*2)+7,(int) Mathf.Floor(Screen.height/5*4)+50,(int) Mathf.Floor(Screen.width/3),(int) Mathf.Floor(Screen.height/5*4)));
         scrollPositionSchematics = GUILayout.BeginScrollView (scrollPositionSchematics,
                                                              false,
                                                              true,
                                                              GUILayout.Width(Mathf.Floor(Screen.width/3)-10),
                                                              GUILayout.Height(Mathf.Floor(Screen.height/5)-50));
         style.fontSize = 14;
         style.normal.textColor = Color.black;
         style.wordWrap = true;
         GUILayout.Label ("This is the Schematic tab.", style);
         CreateSchematicButtons ();
         GUILayout.EndScrollView ();
         GUILayout.EndArea ();
 
     }
 
     void CreateSchematicButtons(){
 
         //button size
         int buttonWidth = 50;
         int buttonHeight = 50;
         
         //for every item contained in the schematicsArray, place a button
         for (int i = 0; i<schematicsArray.Length; i++){
             if(GUI.Button(new Rect(0, scrollPositionSchematics.y+buttonHeight*i, buttonWidth, buttonHeight), "Button "+i)){
                 Debug.Log("Pressed button #"+i);
             }
             GUILayout.Space(buttonHeight);
         }
     }
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

1 Reply

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

Answer by No_Username_Found · Jun 28, 2014 at 05:35 AM

The problem is that as of Unity 4.3.4f1 the Vector2 coordinates for ScrollView are reversed. ScrollView.x is the change up-and-down, while ScrollView.y is the change left-and-right.

So, if scrolling up-and-down a button needs the following (in C#):

 GUI.Button(new Rect(positionX, positionY+ScrollView.x, width, height), "Button content");
 

And if scrolling left-and-right (in C#):

 GUI.Button(new Rect(positionX+ScrollView.y, positionY, width, height), "Button content");
 

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.

Follow this Question

Answers Answers and Comments

21 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

Related Questions

How to hook up the particle system to jump animation? 1 Answer

Make more buttons appear, on button click. 1 Answer

GUI Button Animation Cue 1 Answer

GUI window popup button 1 Answer

Show content with scrollbar? 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