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 Ledii · Feb 10, 2019 at 09:46 PM · editor-scriptingserialization

Base MonoBehaviour Editor, foldout with base properties, child properties untouched.

Hello, I would like to try and create a base class that all my MonoBehaviours can inherit from, where I can control stuff like logging options etc. How ever, I dont want to clutter up my serialized variables in my editor most of the time. So I want to add a foldout using a CustomEditor. I have set it up to override the OnInspectorGUI() method. But what I struggle to figure out is, how do I do the following?

 BaseBehaviour : MonoBehaviour
 [SerializedField] bool showLogs;

 TestBehaviour : BaseBehaviour
 [SerializedField] bool testBool;

And then have the editor script for the BaseBehaviour draw out...

 if (foldout) {
     DrawAllFieldsInBaseBehaviour (aka showLogs, in this case)
 }
 DrawAllFieldsInInheritedBehaviour (like default, but EXCLUDING. showLogs)

To clearify, I need help to write these two Draw methods above. If at all possible, I don't know a lot about how serialization works, so I might not even be able to say DrawAllFieldsInInheritedBehaviour

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 Ledii · Feb 10, 2019 at 10:12 PM

After some more searches, I did stumble upon some useful functions. So I now have access to all the serialized fields. Using:

 SerializedProperty property = serializedObject.GetIterator();
 while (property.NextVisible(true))
 {
     properties.Add(property.name);
     Debug.Log("Prop: " + property.name);
 }

I get both showLogs AND testBool. And I can draw the remaining properties using:

 DrawPropertiesExcluding(serializedObject, excludedProperties.ToArray());

So now I actually only need a way to determine that only showLogs belongs in the BaseBehaviour class!

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 Ledii · Feb 10, 2019 at 10:53 PM 0
Share

I did eventually figure out something that worked like I wanted. It was a headache to try and look through what all of the results was from several functions. In case someone finds this concept useful, I you can find my final code here: https://pastebin.com/uzkzRzAs

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

110 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 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 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 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 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 avatar image avatar image avatar image avatar image avatar image

Related Questions

Persistently changing variables from custom editor 2 Answers

How i can subscribe to an Event through Inspector 0 Answers

How to properly serialize a variable in a custom inspector ? getting a weird Debug result [UnityEditor][Serialize] 2 Answers

Custom inspector variable resets automatically 1 Answer

How do components(e.g transform) save data? 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