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 tyler.kendrick · Jun 08, 2011 at 08:23 PM · guiwindowdragwindow

GUI DragWindow only working for a single window.

Goal: To have draggable windows that only drag when a specific region of the window has been clicked.

Issue: When multiple windows are on the scene, only the first one to be moved will be able to move until control has left the unity debugger.

Code:

 using UnityEngine;
 using System.Collections;
 
 public class Window : MonoBehaviour 
 {
     private static int windowsCreated = 0;
     
     public Rect ClientRect;
     public GUIContent Content;
     public GUISkin Skin;
     private int ID;
     private bool canDrag = false;
     private Rect bounds = new Rect(0, 0, 100, 18);
     
     void Start()
     {
         ID = ++windowsCreated;
     }
     
     void OnGUI()
     {
         ClientRect = GUI.Window(ID, ClientRect, Draw, Content, Skin.window);
     }
     
     
     void Draw(int id)
     {
         if(bounds.Contains(Event.current.mousePosition))
         {
             if(Input.GetMouseButton(0))
             {
                 canDrag = true;
             }
         }
         if(Input.GetMouseButton(0) == false)
         {
             canDrag = false;
         }
         
         if(canDrag) GUI.DragWindow();
     }
 }



Steps to reproduce: - Create an empty game object.

  • Attach the script from the code snippet written above.

  • Repeat steps 1 and 2 until you have created the desired number of windows (3 windows is preferred for this test).

  • Create a default GUISkin and attach it to the scripts.

  • Run the debugger.

  • Click the upper region of a window and drag it.

  • Attempt to do the same for the other windows.

  • Click outside of the focus of the UnityDebugger.

  • Click inside the UnityDebugger, on a different window and drag.

Attempted Solutions:

  • Rewriting the script.

  • Writing logs to verify that the bools are being set, and that the mouse is in collidable bounds.

  • Black magic.

If anyone has any ideas on why this could be happening, or know of a solution, it would be greatly appreciated if you could post your thoughts.

Kind Regards,

Tyler R. Kendrick

Comment
Add comment · Show 1
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 Molix · Jun 09, 2011 at 03:24 AM 0
Share

Well composed. However, I am not able to reproduce the Issue indicated (I can move any of them, not just the first, and they move fine after co$$anonymous$$g back). Also, note that GUI.DragWindow has an overload that takes a Rect to do the mouse checking logic you've got there.

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

Dragging and Locking Buttons. 1 Answer

How do you prevent GUI.DragWindow from letting the window go offscreen? 2 Answers

Why does my GUI.Window dragging behaviour act erratically on a rotated window? 1 Answer

Window Background Image not showing 1 Answer

GUI Focusing multiple windows 1 Answer


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