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 JoeW97 · Nov 29, 2013 at 09:16 AM · editorsliderundo

How to create an undo-able slider in a custom Editor that allows range modification?

( This is related to http://answers.unity3d.com/questions/585584/how-to-set-the-range-of-a-serializedproperty-at-ru.html#comment-586007 but after getting some answers I realized I needed to ask the question in a more open-ended way.)

I'm creating an Editor class for a custom inspector. The purpose is to let the user create some geometry in the scene, and then control its width with a slider. (…. and lots of other unrelated stuff.)

The project was finished when I discovered that it is mandatory for Editors to implement Undo functionality. ( http://answers.unity3d.com/questions/583052/undo-mandatory-for-editor-tools.html )

I learned about SerializedProperty, and how they will automagically encapsulate 'undo' behavior, re-wrote the editor, and again everything works, except…

The 'width' slider needs to be restricted to certain values depending on other user-set variables.

I know how to impose a fixed range:

 [Range(1, 10)]
  public int    width = 2;

But this won't work, because at some point in use, the Range will need to be different.

I was shown today how to restrict a general variable to certain values using properties, but in this case it has to be (I think!) a SerializedProperty (to support Undo), and has to be correctly represented by the 'width' slider in the inspector:

  EditorGUILayout.PropertyField(width);

Rather than use terms that I haven't mastered yet, my more general question is...

Is it possible to have a slider in a custom editor that:

• correctly reacts to Undo, and...

• can have its min and max values modified during use?

Thanks

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
2
Best Answer

Answer by karljj1 · Nov 29, 2013 at 10:07 AM

Create a custom property drawer:

http://docs.unity3d.com/Documentation/ScriptReference/PropertyDrawer.html

The Range attribute just causes a Range property drawer to be used. You can make your own attribute and link it to a custom property drawer that allows for a changing range value.

Comment
Add comment · Show 1 · 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
avatar image JoeW97 · Nov 30, 2013 at 04:33 PM 0
Share

Thanks karlji1, this was indeed the way to do it :)

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

17 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

Related Questions

How to properly handle Undo events in custom inspector? 0 Answers

Undo.RecordObject isn't working. 7 Answers

Undo asset replace? *emergency D:* 3 Answers

Slider issue: two sliders are used, but one takes all actions for both. 0 Answers

MonoBehaviour references are lost on Undo 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