• 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.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



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

Rect to RectTransform on overlay Canvas? 1 Answer

Putting Dictionary/List using foreach as buttons in a scroll view? 3 Answers

Unity GUI fitting item list with max size 0 Answers

executing As long as button still pressed 1 Answer

Getting almost nowhere with my buttondrag script 1 Answer

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges