Editor Window Edit property of items in a list

Hello, need a bit of help
I have a script that serve as manager for items in my game
I’m trying to make a custom editor window to display in a list only the item with that manager script.
And I want to be able to edit the properties of that script on each item, from that window.

I thought ReorderableList would be the solution, but after hours trying I’m getting nowhere and I don’t understand half of what I’m doing, following scattered tutorials left and right.
Ideally I want this http://va.lent.in/content/images/2014/Jun/list_2.png
But I’ve no idea how to get to this

This is my Manager script

using UnityEngine;
using System.Collections;
using System;

public enum CubeGroups {Red, Boing, Black, Green, Roll, Spawner}

public class CubeManager : MonoBehaviour {

	public bool startCube;
	public CubeGroups myGroup;

	[Header("Smaller Number means longer life")]
	public float lifeTime;
	static public float _chrono;

	void Start(){
	    		_chrono = 25;

    	void Update(){

		_chrono -= Time.deltaTime;
		if (_chrono < 0) {
			transform.tag = "Cube";
		if (!startCube) {
			float _a = GetComponent<MeshRenderer> ().material.color.a;
			_a  -= (lifeTime * Time.deltaTime);
			GetComponent<MeshRenderer> ().material.color = new Color (GetComponent<MeshRenderer> ().material.color.r, GetComponent<MeshRenderer> ().material.color.g, GetComponent<MeshRenderer> ().material.color.b, _a);
			if (_a <= 0) {
				Destroy (this.gameObject);

And this is my attempt at editor window

using UnityEngine;
using System.Collections;
using UnityEditor;
using UnityEditorInternal;

public class CubeWindow : EditorWindow {

	CubeManager[] cubemag = (CubeManager[])FindObjectsOfType (typeof(CubeManager));

	[MenuItem ("Window/Cube Window")]

	public static void  ShowWindow () {

   	void OnGUI() {

		GUILayout.Label ("List of Cubes", EditorStyles.boldLabel);

		cubemag = (CubeManager[])FindObjectsOfType (typeof(CubeManager));
		for(int i = 0; i < cubemag.Length; i++)
			cubemag _= (CubeManager)EditorGUILayout.ObjectField(cubemag*, typeof(CubeManager));*_

* } *
* }*

If anyone know how to do so, and can explain me with a simple step-by-step because I’ve never fiddled with Unity gui before so I’m completely lost…

Well I got it to display for you, the rest is up to you :stuck_out_tongue:


using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;

public class CubeWindow : EditorWindow //Deriving from editor window to get window and GUI elements.

    private CubeManager[] Cubemag; //Obiously your array of target objects
    [MenuItem("Window/Cube Window")] //Declaring to Unity engine that this is meant as a menu item.
    public static void ShowWindow() //Telling unity what MenuItem - "WIndowCube" does.
        EditorWindow cubeWindow = EditorWindow.GetWindow(typeof(CubeWindow)); //Getting our window for unity to use.
        GUIContent titlecontent = new GUIContent("Cube Window"); //Creating some title content.
        cubeWindow.titleContent = titlecontent; //Setting the title content to the window.
        cubeWindow.maxSize = new Vector2(300, 500); //Declaring the max size of the window.
        cubeWindow.minSize = new Vector2(300, 500); //Declaring the min size of the window.
        cubeWindow.ShowPopup(); //Showing our window as a Popup, I.E., a default editor style.

    void OnGUI() //OnGUI gets called like an Update... very very often, avoid making large data collection calls here.
        EditorGUILayout.BeginVertical(EditorStyles.helpBox); //Declaring our first part of our layout, and adding a bit of flare with EditorStyles.

        GUILayout.Label("List of Cubes", EditorStyles.boldLabel); //Making a label in our vertical view, declaring its contents, and adding editor flare.

        Cubemag = FindObjectsOfType<CubeManager>(); //Collecting our cube info, I suggest finding a way to do this outside of OnGUI.
        for (int i = 0; i < Cubemag.Length; i++) //Your loop to display the objects, THIS must exist in OnGUI.
            if (Cubemag *!= null) //Preventing null errors if the objects are removed.*

Cubemag = (CubeManager)EditorGUILayout.ObjectField(Cubemag*, typeof(CubeManager), true); //Declaring our object as an object field, with the type of object we want, and allowing scene object.*
EditorGUILayout.BeginHorizontal(); //Adding a horizontal view to indent our next line so that the properties look like children, LOTS of things you can add like toggles and stuff to reduce this clutter.
GUILayout.Space(15); //The indent for our next line, in pixels.
Cubemag_.lifeTime = EditorGUILayout.FloatField(“Life Time”, Cubemag*.lifeTime); //the lifeTime property of cubemap can be assigned to a GUI element here.*
EditorGUILayout.EndHorizontal(); //All layout areas must be closed like this._

EditorGUILayout.EndVertical(); // And closing our last area.