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
1
Question by SunSailor · Aug 31, 2012 at 12:29 AM · editorsliderhandle

How does Handles.Slider2D work correctly?

I'm experimenting with extending the editor and stumbled accross the Slider2D handle. As all other handles work pretty much out of the box, because they are acting in the 3D space, the Slider2D gives me some headaches. Maybe someone can team up with me to build a simple exmaple here? I create a simple MonoBehavior class, which draws a border around its 1,1,0 area and placed a smaller box inside. Now I want to be able to drag the smaller box around within the box. This is my code so far.

The Panel class:

using UnityEngine; using System.Collections;

 public class CUIPanel : MonoBehaviour {
     
     public Vector2 ui2dBox=new Vector2(0,0);
     
     void Start () {
     
     }
     
     void Update () {
     
     }
     
     void OnDrawGizmos() {
         Gizmos.DrawLine(transform.TransformPoint(0,0,0),transform.position+transform.TransformDirection(1,0,0));
         Gizmos.DrawLine(transform.TransformPoint(1,0,0),transform.position+transform.TransformDirection(1,1,0));
         Gizmos.DrawLine(transform.TransformPoint(1,1,0),transform.position+transform.TransformDirection(0,1,0));
         Gizmos.DrawLine(transform.TransformPoint(0,1,0),transform.position+transform.TransformDirection(0,0,0));
         
         Gizmos.DrawLine(transform.TransformPoint(ui2dBox.x,ui2dBox.y,0),transform.TransformPoint(ui2dBox.x+0.1f,ui2dBox.y,0));
         Gizmos.DrawLine(transform.TransformPoint(ui2dBox.x+0.1f,ui2dBox.y,0),transform.TransformPoint(ui2dBox.x+0.1f,ui2dBox.y+0.1f,0));
         Gizmos.DrawLine(transform.TransformPoint(ui2dBox.x+0.1f,ui2dBox.y+0.1f,0),transform.TransformPoint(ui2dBox.x,ui2dBox.y+0.1f,0));
         Gizmos.DrawLine(transform.TransformPoint(ui2dBox.x,ui2dBox.y+0.1f,0),transform.TransformPoint(ui2dBox.x,ui2dBox.y,0));
     }
 }

The editor class:

using UnityEditor; using UnityEngine; using System.Collections;

[CustomEditor(typeof(CUIPanel))] public class CUIPanelEditor : Editor { private Vector3 prevPos=new Vector3(-999.9f,-999.9f,-999.9f); void Start () { } public void OnSceneGUI() { CUIPanel cuiPanel=(CUIPanel) target; Handles.color=Color.red; Vector3 xHandle=Handles.Slider2D( cuiPanel.transform.TransformPoint(cuiPanel.ui2dBox.x,cuiPanel.ui2dBox.y,0), cuiPanel.transform.TransformDirection(Vector3.right), cuiPanel.transform.TransformDirection(Vector3.right), cuiPanel.transform.TransformDirection(Vector3.forward), HandleUtility.GetHandleSize(new Vector3(0.1f,0,0)),Handles.ArrowCap,1f); cuiPanel.ui2dBox.x=(xHandle-cuiPanel.transform.position).x; } public override void OnInspectorGUI() { CUIPanel cuiPanel=(CUIPanel) target; EditorGUIUtility.LookLikeInspector(); cuiPanel.ui2dBox=EditorGUILayout.Vector2Field("2D Box",cuiPanel.ui2dBox); } void Update () { } }

Currently, the whole thing misbehaves in several thing. First, if I drag the handle, it isn't picked at the point of click, but moves the box to this point. The result is, that the handle and the object jump. From there everything seems to work. as long as I don't rotate the object. From there, positioning fails and the box starts jumping back to a zero position after a while. Anyone any idea how to continue with this generally very useful mechanism? I think a reference snippet would be useful for others as well, as I haven't found any activity about this method at all.

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

7 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

EditorGUI.Slider positioning 1 Answer

Custom Handle. Mutliple Objects 0 Answers

How to prevent PositionHandle to become FreeMoveHandle when shift key is pressed 0 Answers

How to limit the amount of decimals with a slider in Unity Editor OnInspectorGUI? 1 Answer

How to create an undo-able slider in a custom Editor that allows range modification? 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