Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

Why is this not shown in the inspector?

Discussion in 'Scripting' started by topaz7, Sep 19, 2015.

  1. topaz7

    topaz7

    Joined:
    Dec 15, 2012
    Posts:
    76
    This list is not showing on the inspector and afaik inspector supports polymorphism. So I don't understand why it s not shown in the inspector.

    Code (CSharp):
    1. [Serializable]
    2.     public class ObservedList<T> : List<T>
    3.     {
    4.         public event Action<int> Changed = delegate { };
    5.         public event Action<T> Added = delegate { };
    6.         public event Action<T> Removed = delegate { };
    7.         public event Action Updated = delegate { };
    8.  
    9.         public new void Add(T item)
    10.         {
    11.             base.Add(item);
    12.             Added(item);
    13.             Updated();
    14.         }
    15.  
    16.         public new void Remove(T item)
    17.         {
    18.             Removed(item);
    19.             base.Remove(item);
    20.             Updated();
    21.         }
    22.  
    23.         public new void AddRange(IEnumerable<T> collection)
    24.         {
    25.             base.AddRange(collection);
    26.  
    27.             foreach (var item in collection)
    28.                 Added(item);
    29.  
    30.             Updated();
    31.         }
    32.  
    33.         public new void RemoveRange(int index, int count)
    34.         {
    35.             for (int i = index; i < count; i++)
    36.                 Remove(this[index]);
    37.  
    38.             base.RemoveRange(index, count);
    39.             Updated();
    40.         }
    41.  
    42.         public new void Clear()
    43.         {
    44.             foreach(var item in this)
    45.                 Remove(item);
    46.  
    47.             base.Clear();
    48.             Updated();
    49.         }
    50.  
    51.         public new void Insert(int index, T item)
    52.         {
    53.             base.Insert(index, item);
    54.             Added(item);
    55.             Updated();
    56.         }
    57.  
    58.         public new void InsertRange(int index, IEnumerable<T> collection)
    59.         {
    60.             base.InsertRange(index, collection);
    61.  
    62.             foreach (var item in collection)
    63.                 Added(item);
    64.  
    65.             Updated();
    66.         }
    67.  
    68.         public new void RemoveAll(Predicate<T> match)
    69.         {
    70.             base.RemoveAll(match);
    71.             Updated();
    72.         }
    73.  
    74.  
    75.         public new T this[int index]
    76.         {
    77.             get { return base[index]; }
    78.             set
    79.             {
    80.                 base[index] = value;
    81.                 Changed(index);
    82.             }
    83.         }
    84.     }
    Code (CSharp):
    1. public ObservedList<string> Test;
     
  2. topaz7

    topaz7

    Joined:
    Dec 15, 2012
    Posts:
    76
    Is there any other way to detect changes on a list on inspector?
     
  3. MadeThisName

    MadeThisName

    Joined:
    Mar 14, 2015
    Posts:
    115
  4. topaz7

    topaz7

    Joined:
    Dec 15, 2012
    Posts:
    76
    That was simple. Thanks a lot!
     
  5. MadeThisName

    MadeThisName

    Joined:
    Mar 14, 2015
    Posts:
    115