Skip to content

Latest commit

 

History

History
74 lines (50 loc) · 2.72 KB

README.md

File metadata and controls

74 lines (50 loc) · 2.72 KB

Reorderable List

An attempt to mimic the ReorderableList within Unity while adding some extended functionality.

screenshot

Installation

This extension can be installed using Unity package manager.
https://github.com/cfoulston/Unity-Reorderable-List.git

  • Package manager UI

    screenshot

  • Manifest

      {
      	"dependencies": {
      		"com.malee.reorderablelist": "https://github.com/cfoulston/Unity-Reorderable-List.git"
      	}
      }
    
  • A standalone version is available under the standalone branch, although this version is no longer maintained.

Features

  • Drag and Drop references (like array inspector)
  • Expandable items and list itself
  • Multiple selection (ctrl/command, shift select)
  • Draggable selection
  • Context menu items (revert values, duplicate values, delete values)
  • Custom attribute which allows automatic list generation for properties*
  • Event delegates and custom styling
  • Pagination
  • Sorting (sort based on field, ascending and descending)
  • Surrogates (Enable adding elements of a different type)

Usage

There are two ways to use the ReorderableList

  1. Create a custom Editor for your class and create a ReorderableList pointing to your serializedProperty
  2. Create custom list class which extends from ReorderableArray, assign [Reorderable] attribute above property (not class).

Pagination

Pagination can be enabled in two ways:

  1. With the [Reorderable] attribute:
    • [Reorderable(paginate = true, pageSize = 0)]
  2. Properties of the ReorderableList:
    • list.paginate
    • list.pageSize

pageSize defines the desired elements per page. Setting pageSize = 0 will enable the custom page size GUI

When enabled, the ReorderableList GUI will display a small section below the header to facilitate navigating the pages

pagination

NOTE

Elements can be moved between pages by right-clicking and selecting "Move Array Element"

Surrogates

Surrogates can be created to facilitate adding Objects to a ReorderableList that don't match the ReorderableList type. This can be achieved in two ways:

  1. With the [Reorderable] attribute:
    • [Reorderable(surrogateType = typeof(ObjectType), surrogateProperty = "objectProperty")]
  2. Property of the ReorderableList:
    • list.surrogate = new ReorderableList.Surrogate(typeof(ObjectType), Callback);

Check the SurrogateTest and SurrogateTestEditor examples for more information