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 /
  • Help Room /
avatar image
0
Question by Ylisar · Sep 14, 2017 at 02:01 PM · editorinspector

heterogeneous container in inspector

If you have lets say a list of some base class, it would seem the only way to actually assign different derived types to it in the inspector is to use ScriptableObject? Am I missing something?

Comment
Add comment · Show 2
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 Bunny83 · Sep 14, 2017 at 03:37 PM 0
Share

Your question sounds very confusing. Did you mean the question in reverse? As it stands it doesn't make much sense. So "the only reason to derive your base class from ScriptableObject is to be able to assign different derived types in the inspector" would make more sense.

You should overthink your question and be more specific about what's your problem or what you're trying to do.

avatar image Ylisar Bunny83 · Sep 15, 2017 at 08:10 AM 0
Share

Sorry, was meant to say only way to ins$$anonymous$$d of only reason to :)

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by Owen-Reynolds · Sep 14, 2017 at 03:57 PM

An editor script (which isn't that difficult to write, once you get all the magic parts sorted out,) should be able to create and display each sub-type properly.

But, yes, Animal[] in the Inspector does seem useless at first. There's no built-in way using the UI to create or to display a Cat or Dog element.

Comment
Add comment · Show 2 · 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 Bunny83 · Sep 14, 2017 at 05:54 PM 1
Share

Uhm, but inheritance is only supported for ScriptableObjects or $$anonymous$$onoBehaviours. Custom serializable classes do not support polymorphism.

ScriptableObjects on the other hand would need to be stored somewhere as assets. Though i'm still not sure what he's actually asking.

avatar image Owen-Reynolds · Sep 14, 2017 at 08:10 PM 0
Share

Ahh...serialization won't check for subtypes. That's the non-fixable problem.

So you can fill public Animal[] A; with Cats and Dogs through code. You can live-view or even safely change just the Animal part through the basic Inspector. But you can't serialize them, which is a deal-breaker. Unity will only ever save it to a file as an array of Animal slices.

The OnSerializeBegin/End callbacks hint they can fix this. But they only help you transform data Unity can serialize into something it can't. They can't prevent serialize from losing all the Cat and Dog data in the first place.

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

92 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

Related Questions

How to save a two-dimensional array, as part of the variable inspector? 0 Answers

Unity Editor - Group Public GameObjects 0 Answers

How do I use EditorGUILayout.EnumPopup with an enum with 'holes' in a custom inspector. 3 Answers

Is it possible to customize how a variable of a certain type would look in the inspector? 1 Answer

Why does Unity use the default values for my Serializable objects while running? 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