Search Unity

[Released] Serializable Dictionary Lite - Now allowing custom editor for key field

Discussion in 'Assets and Asset Store' started by Rotary-Heart, Feb 19, 2018.

  1. waxx

    waxx

    Joined:
    Apr 1, 2013
    Posts:
    48
    Could you shoot me a private message with the .unitypackage? The store seems to take forever for the update to come online.
     
  2. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Sure, pm sent.
     
  3. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.4 is now live!
     
  4. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.5 has been submitted to the asset store for review. This version includes:
    • Modified package structure to follow new structure requirements.
    • Fixed bug with Generic key type. Now it should be saving correctly.
    • Modified drawing functionality to work better for any kind of key and value type.
    • Improved editor performance.
    • Included new attribute that allows to draw generic key as property, allowing to use custom drawers.
    Quick preview of what this new attribute allows you to do:
    upload_2018-7-10_18-5-53.png upload_2018-7-10_18-6-34.png

    Full custom property drawers can be used now with key values.
     
  5. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.5 is now live!
     
  6. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.5.1 has been submitted to the asset store for review. This version includes:
    • Modified the way the new advanced key attribute works. Allow for easier and faster implementation. Now the attribute is implemented into the dictionary field, instead of the class.
     
  7. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.5.1 is now live!
     
  8. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.5.2 has been submitted to the asset store for review. This version includes:
    • Fixed reordering list bug where it would exchange key values.
    • Fixed drawing overlapping issue with Unity 2018.2+
     
  9. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.5.2 is now live!
     
    Timmy-Hsu likes this.
  10. Timmy-Hsu

    Timmy-Hsu

    Joined:
    Aug 27, 2015
    Posts:
    51
    Thanks for update.
    Could you add Dictionary ContainsValue?
     
  11. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Sure, that will be added soon
     
  12. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.5.3 has been submitted to the asset store for review. This version includes:
    • New ContainsValue function has been included
     
    Timmy-Hsu likes this.
  13. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.5.3 is now live!
     
    Timmy-Hsu likes this.
  14. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    Asset is great. However I see some problems when using it.
    First, I see after each time I add a new value to the dictionary, the "+" and the "-" button move up. Until I have about 14 values, the button becomes very hard to click.
    Next, you can display the dictionary into multiple pages, I have not tried it since I can not add more than 14 values, but it can be a problem if I have hundreds of key-value pairs.

    Thank you very much.
     
  15. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    With what version of unity you had this issue? What were you using for key and value?
     
  16. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    I'm using the latest version 2018.2.6f1. After I look back, not the "+" and "-" buttons are moved up, which is due to the values occupying space, it is gradually crossing the background below.

    I are using the dictionary dictionary <int, CustomClass>. Capture.PNG
     
  17. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Unity 2018 changed something on the layout that made this issue appear. Here try replacing the current DictionaryPropertyDrawer.cs located at Rotary Heart\SerializableDictionary\Editor\ with the one attached. If that fixes the issue let me know so I can push an update to the store.
     

    Attached Files:

  18. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    This solved the problem. However, it is shrinking.

    Capture.PNG
     
  19. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    What is shrinking?
     
  20. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    Every time I add a value to the dictionary. Blue space is more.
    Capture.PNG
     
  21. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    Can you divide the dictionary into many pages? I will use it to save all items in my game. So it will be very long in the editor.
     
  22. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    Somehow Unity has serializable Reorderable List when I have 35 key-value pairs of Character Data. But Reorderable List is of Item Data.
    Capture.PNG
     
  23. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Ok it seems like I used a little bit to high for space. I'll check that one soon, at least you are able to use it until I figure out how to do it correctly.

    I will consider that, but perhaps a better solution is to create multiple dictionaries and separate your items by class/level/category?

    I don't understand what you are asking here sorry. The reorderable list is used, that is the drawing method is used.
     
  24. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.5.4 has been submitted to the asset store for review. This version includes:
    • Fixed drawing issue that appeared with 2018.2+
    • Changed the drawing background of the dictionary to use the default box style. This is to allow custom themes to handle the dictionary too.
     
  25. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.5.4 is now live!
     
  26. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.5.5 has been submitted to the asset store for review. This version includes:
    • Changed drawing method to work correctly on both Light and Dark unity themes.
    • Changed selection color to use the same color as unity default selection.
     
    Timmy-Hsu likes this.
  27. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.5.5 is now live!
     
  28. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.6 has been submitted to the asset store for review. This version includes:
    • New paging system included.
    • Bug fixing for Object key dictionaries.
    • Fixed height issue with generic key type.
    • Included logic to remove extra spaces added to key with custom drawers.
    @haruna9x The paging system has been implemented and will be available with this update.
     
    Last edited: Oct 3, 2018
    haruna9x likes this.
  29. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.6 is now live!
     
  30. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.6.1 has been submitted to the asset store for review. This version includes:
    • Re worked the drawing logic so it works on all Unity versions. Tested and working on Unity 5, 2017, 2018 and 2019
     
  31. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.6.1 is now live!
     
  32. ibbybn

    ibbybn

    Joined:
    Jan 6, 2017
    Posts:
    193
    Haven't had any luck using this with the binaryformatter. I must be missing something simple?

    Code (CSharp):
    1. // Creating the class:
    2.  
    3. [System.Serializable]
    4. public class StringBoolDict : SerializableDictionaryBase<string, bool> { }
    5.  
    6. // Then in my globalcontrol and serializables/playerstatistics scripts:
    7.  
    8. [SerializeField]
    9. public StringBoolDict dialogueDict;
    10.  
    11. // SaveFile looks like this:
    12.  
    13. FileStream file = File.Create (Application.persistentDataPath + "/lastSave.dat");
    14. BinaryFormatter bf = new BinaryFormatter ();
    15. PlayerStatistics data = new PlayerStatistics ();
    16. ...
    17. data.dialogueDict = dialogueDict;
    18. ...
    19. bf.Serialize (file, data);
    20. file.Close ();
    This works perfectly for every other type in the game.. Right now I have a dialogueStrings and dialogueBools array but would like to have them together. Anything I'm doing wrong?

    Error in Unity 2018.2.11 is:

    Code (CSharp):
    1. SerializationException: Type 'RotaryHeart.Lib.SerializableDictionary.DrawableDictionary' in Assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
    2. System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers (System.RuntimeType type) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    3. System.Runtime.Serialization.FormatterServices+<>c__DisplayClass9_0.<GetSerializableMembers>b__0 (System.Runtime.Serialization.MemberHolder _) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    4. System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue].GetOrAdd (TKey key, System.Func`2[T,TResult] valueFactory) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    5. System.Runtime.Serialization.FormatterServices.GetSerializableMembers (System.Type type, System.Runtime.Serialization.StreamingContext context) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    6. System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo () (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    7. System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize (System.Object obj, System.Runtime.Serialization.ISurrogateSelector surrogateSelector, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit serObjectInfoInit, System.Runtime.Serialization.IFormatterConverter converter, System.Runtime.Serialization.Formatters.Binary.ObjectWriter objectWriter, System.Runtime.Serialization.SerializationBinder binder) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    8. System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize (System.Object obj, System.Runtime.Serialization.ISurrogateSelector surrogateSelector, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit serObjectInfoInit, System.Runtime.Serialization.IFormatterConverter converter, System.Runtime.Serialization.Formatters.Binary.ObjectWriter objectWriter, System.Runtime.Serialization.SerializationBinder binder) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    9. System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write (System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo objectInfo, System.Runtime.Serialization.Formatters.Binary.NameInfo memberNameInfo, System.Runtime.Serialization.Formatters.Binary.NameInfo typeNameInfo) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    10. System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize (System.Object graph, System.Runtime.Remoting.Messaging.Header[] inHeaders, System.Runtime.Serialization.Formatters.Binary.__BinaryWriter serWriter, System.Boolean fCheck) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    11. System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (System.IO.Stream serializationStream, System.Object graph, System.Runtime.Remoting.Messaging.Header[] headers, System.Boolean fCheck) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    12. System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (System.IO.Stream serializationStream, System.Object graph, System.Runtime.Remoting.Messaging.Header[] headers) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    13. System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (System.IO.Stream serializationStream, System.Object graph) (at <f2e6809acb14476a81f399aeb800f8f2>:0)
    14. GlobalControl.SaveToFile (System.Int32 FileName) (at Assets/Scripts/GlobalControl.cs:1427)
    15. GlobalControl.Start () (at Assets/Scripts/GlobalControl.cs:588)
     
  33. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    @ibbybn I was able to replicate the issue and found a way that you can solve it for now. The problem with BinaryFormatter is that it's trying to serialize everything. So to solve it do the following (note that I will include this function on the next update).

    Go to SerializableDictionaryBase.cs and add the following function:
    Code (CSharp):
    1. /// <summary>
    2. /// Copies the data to a dictionary. If an entry with the same key is found it replaces the value
    3. /// </summary>
    4. /// <param name="dest">Dictionary to copy the data to</param>
    5. public void CopyTo(IDictionary<TKey, TValue> dest)
    6. {
    7.     foreach (var data in this)
    8.     {
    9.         if (dest.ContainsKey(data.Key))
    10.         {
    11.             dest[data.Key] = data.Value;
    12.         }
    13.         else
    14.         {
    15.             dest.Add(data.Key, data.Value);
    16.         }
    17.     }
    18. }
    Then you will have to modify your loading and saving method. Instead of serializing the Drawable dictionary serialize a normal dictionary. Here's a quick example

    Code (CSharp):
    1. [System.Serializable]
    2. public class StringBoolDict : SerializableDictionaryBase<string, bool> { }
    3.  
    4. [SerializeField]
    5. public StringBoolDict dialogueDict;
    6.  
    7. [System.Serializable]
    8. public class PlayerStatistics
    9. {
    10.     [SerializeField]
    11.     public Dictionary<string, bool> dialogueDict = new Dictionary<string, bool>();
    12. }
    13.  
    14. void Start()
    15. {
    16.     BinaryFormatter bf = new BinaryFormatter();
    17.     PlayerStatistics data = new PlayerStatistics();
    18.     string filePath = Application.dataPath + "/lastSave.dat";
    19.  
    20.     if (!File.Exists(filePath))
    21.     {
    22.         using (FileStream file = File.Create(filePath))
    23.         {
    24.             dialogueDict.CopyTo(data.dialogueDict);
    25.             bf.Serialize(file, data);
    26.         }
    27.     }
    28.     else
    29.     {
    30.         using (FileStream file = new FileStream(filePath, FileMode.Open))
    31.         {
    32.             data = bf.Deserialize(file) as PlayerStatistics;
    33.             dialogueDict.CopyFrom(data.dialogueDict);
    34.         }
    35.     }
    36. }
    I will try to find a better workaround, but this will allow you to keep working while I find it.
     
    ibbybn likes this.
  34. ibbybn

    ibbybn

    Joined:
    Jan 6, 2017
    Posts:
    193
    Ah, wasn't expecting such a fast reply. This is indeed better than what I hacked together in the meantime!
    Since all I needed is keep the data together and have some helper functions I did this:

    Code (CSharp):
    1. [System.Serializable]
    2. public class StringBoolClass { public string name; public bool value; }
    3.  
    4. [System.Serializable]
    5. public class StringBoolArray {
    6.     public StringBoolClass[] array;
    7.  
    8.     public bool Contains (string _name) {
    9.         for (int i = 0; i < array.Length; i++) {
    10.             if (array[i].name == _name) return true;
    11.         }
    12.  
    13.         return false;
    14.     }
    15.     public int IndexOf (string _name) {
    16.         if (array.Length == 0) return -1;
    17.  
    18.         for (int i = 0; i < array.Length; i++) {
    19.             // Debug.Log (array[i].name + " " + array[i].value);
    20.             if (array[i].name == _name) return i;
    21.         }
    22.  
    23.         return -1;
    24.     }
    25. }
    Works but doesn't look as good as yours in the inspector etc. Thx!
     
  35. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    @Rotary-Heart Thank you very much, paging system is really great. However, the text is white on a white background, so I edited a bit for the Style.prebutton. Hope you will make it change based on the skin of the editor. Thanks again.
     
  36. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.6.2 has been submitted to the asset store for review. This version includes:
    • Included new CopyFrom, CopyTo, and Clone methods that can be used for serialization.
    • Fixed page text color for light theme.
    @haruna9x Issue solved on this version
     
    haruna9x likes this.
  37. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.6.2 is now live!
     
    ibbybn likes this.
  38. haruna9x

    haruna9x

    Joined:
    Jul 28, 2016
    Posts:
    10
    @Rotary-Heart You update very quickly. I have found that when I serialize a dictionary into a json file, the fields of the ReorderableList class are also serialized (because I am serialized within Unity Editor so UNITY_EDITOR is meaningless). I tried marking them with [System.NonSerialized] without causing any problems. Is there any reason you keep them serialized?
     
  39. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Sure thing, no problem. Glad to know that this way you can keep working with it.

    Hello, well I've been testing heavily the drawing method since I need to be sure that it works on all versions and now with the introduction of the 2019 editor theme there were some changes required to make it work.

    Nothing should happen if they are marked as NonSerialized at most they will be generated every time you select it and it starts drawing, but if you want to save only the data on the dictionary you will have to use one of the new functions to copy or clone it to a new dictionary. This way you avoid saving data that is not required since most likely you only want and need the actual data inside the dictionary.

    This approach is actually what needs to be done if using the BinaryFormatter since it will fail to serialize both the ReorderableList and the ReqReferences fields.
     
  40. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.6.3 has been submitted to the asset store for review. This version includes:
    • Included define for third party usage.
    • Page system now is drawn at the top too.
    • New option to show dictionary size on dictionary name.
     
  41. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Great news, version 2.6.3 is now live!
     
  42. FBones

    FBones

    Joined:
    Aug 28, 2016
    Posts:
    73
    @Rotary-Heart, please provide a full example showing how to use a RequiredReferences Object to set defaults.

    Also, when the documentation says "This should only be used for UnityEngine.Object inherited classes," what is the "this"?
     
  43. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    The documentation already provides the information to use this setup. Also, on the example folder there is a database that has multiple different examples and 4 are using it.

    On that context this is referring to the script.
     
  44. FBones

    FBones

    Joined:
    Aug 28, 2016
    Posts:
    73
    @Rotary-Heart I checked the documentation before posting, and obviously it did not help me.

    I have an object of type SerializableDictionaryBase:

    Code (CSharp):
    1. [System.Serializable]
    2. public class ParameterDictionary : SerializableDictionaryBase<string, float> { }
    3.  
    And I have an object deriving from ScriptableObject that has this parameter:

    Code (CSharp):
    1. public class TierData : ScriptableObject {
    2.  
    3.     [SerializeField]
    4.     private ParameterDictionary myDefaults;
    5. }
    And I don't see any way to populate the requiredRefs property of myDefaults. It does not show up in the editor. It isn't even clear whether you are talking about be providing default values **for** the keys or default values **to** the keys.

    In the database example, there are 19 attributes of classes deriving from SerializableDictionaryBase, but there are only 4 requiredRefs showing in the editor. No indication as to why some SerializableDictionaryBase derived classes have this field exposed in the editor and some do not.

    Finally, even if I could figure out why some objects have requiredRefs exposed and some do not, it wouldn't explain how to use a RequiredReferences object to provide defaults because none of the fields are populated. I tried adding an int field to see if that caused anything to change in the Example Database object, but it did not.

    So the whole thing is very opaque to me.
     
  45. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Why do you want to use requiredRefs if it's only needed for UnityEngine.Object key type dictionaries? The reason the example provided only shows 4 requiredRefs fields is because those are the only dictionaries that need it. That is why it says: "This should only be used for UnityEngine.Object inherited classes." in your case you are not making a dictionary with a key type that inherits from UnityEngine.Object.

    The RequiredReference class is needed because the Dictionary can’t handle null for a key so it requires a default value and the editor already gives that value to UnityEngine.Object types.

    Can you point me to what part of the "UnityEngine.Object as a key" section from the documentation confused you so I can make it better?
     
  46. FBones

    FBones

    Joined:
    Aug 28, 2016
    Posts:
    73
    @Rotary-Heart The confusion here is that it was not clear to me what you were attempting to do with Required References. Frequently when one speaks of "default values" for dictionaries, it refers to the actual values **assigned** to the keys, not default values **for the keys**. This is what I was saying when I said it was not clear whether you were providing default values **for** the keys or default values **to** the keys.

    The issue is that people speak of dictionaries as (key, value) pairs, so anytime you use the word "value" it sounds like the lookup value for a pair.

    I understand now what you are doing, and it makes sense now.

    I recognize emphasizing this on your wiki-page for Required References. I would say something like:

    ====================
    This class is used for dictionaries whose keys derive from Unity.Object. It is necessary to avoid having null values for the key term of a (key, value) pair.
    An object of this class provides default references the Unity Editor will use to populate the key term for each (key, value) pair. It does not provide default references for the value terms.
    ====================

    (If the above is inaccurate, please correct. But I think this gets across what the goal is.)
     
    Rotary-Heart likes this.
  47. FBones

    FBones

    Joined:
    Aug 28, 2016
    Posts:
    73
    @Rotary-Heart I have another question.

    I have a class Tier that has a SerializableDictionary in it named parameters:

    Code (CSharp):
    1. [System.Serializable]
    2. public class ParameterDictionary : SerializableDictionaryBase<string, float> { }
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using RotaryHeart.Lib.SerializableDictionary;
    5.  
    6. [System.Serializable]
    7. public class Tier {
    8.  
    9.     [SerializeField]
    10.     private ParameterDictionary parameters = new ParameterDictionary();
    I have an object deriving from ScriptableObject that contains a list of these Tiers:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5. [CreateAssetMenu(fileName = "tier_data", menuName = "Tier Data", order=1)]
    6. public class TierData : ScriptableObject {
    7.  
    8.     public List<Tier> tiers;
    When I look in the editor, sometimes the Parameters field for a given tier object looks like a normal dictionary, except the keys are not visible, only the values:

    upload_2018-10-14_16-57-25.png

    The actual key labels exist, they are just not shown.

    If I scroll down a bit, I start to see other fields that belong to the tier objects, which have nothing to do with the dictionary:

    upload_2018-10-14_17-3-44.png

    But then, right as the expanded dictionary scrolls off the top of the Inspector window, the whole display changes to this:

    upload_2018-10-14_16-59-12.png

    Note that this information does not show up when the dictionary is flattened:

    upload_2018-10-14_17-2-1.png


    Is this expected behavior?
    Is there a way to get the key values to show up all the time?

    (I tried to make a minimal example showing this behavior, but I started getting other errors.)
     
  48. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    @FBones I will update the wiki page so that it's more clear what it does. Thanks for pointing that out.

    As for you other issue, no that is definitely not the expected behaviour. What Unity version are you using? Could you send me the script with the values that are giving this issue (you can send them on a private message)?
     
  49. FBones

    FBones

    Joined:
    Aug 28, 2016
    Posts:
    73
    @Rotary-Heart , I started a conversation with files and screenshots to reproduce. Let me know if you need anything else.

    Thanks for looking into this.
     
    Rotary-Heart likes this.
  50. Rotary-Heart

    Rotary-Heart

    Joined:
    Dec 18, 2012
    Posts:
    813
    Version 2.6.4 has been submitted to the asset store for review. This version includes:
    • Fixed 2018.2+ inspector issue
    @FBones This version fixes the issue you reported. Thanks for the detailed report.