Skip to content

ArrangeWidgetsInGrid.js

Jeppe Zapp edited this page Apr 13, 2014 · 4 revisions
by mrzapp

This could be useful for inventory/shop screens

#pragma strict

@script ExecuteInEditMode()

import System.Linq;

public class ArrangeWidgetsInGrid extends MonoBehaviour {
	public var rows : int = 0;
	public var spacing : float = 10;
	public var arrangeNow : boolean = false;

	public function Update () {
		if ( arrangeNow ) {
			var x : int = 0;
			var y : int = 0;
			
			var unsorted : List.< Transform > = new List.<Transform> ();
			
			for ( var i : int = 0; i < transform.childCount; i++ ) {
				unsorted.Add ( transform.GetChild(i) );
			}

			var sorted : List.<Transform> = unsorted.OrderBy ( function ( t : Transform ) t.gameObject.name ).ToList ();

			for ( i = 0; i < sorted.Count; i++ ) {
				sorted[i].localPosition = new Vector3 ( x * spacing, y * spacing, transform.GetChild(i).localPosition.z );
				
				if ( x < rows - 1 ) {
					x++;
				} else {
					x = 0;
					y++;
				}
			}

			arrangeNow = false;
		}
	}
}