nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

NGUI の ScrollView 内のアイテムをドラッグアンドドロップで並び替える

はじめに

構成

ゲームオブジェクトの親子関係とアタッチするコンポーネント

  • Scroll View (UISCrollView, UIDragDropRoot)
    • Grid (UIGrid)
      • Item (BoxCollider, UIDragDropItem, UIDragScrollView)
      • Item
      • Item

Scroll View オブジェクトの設定

  • UIPanel の Size を任意で設定
  • UIScrollView の Movement を任意で設定(今回は縦スクロールにするので Vertical に)

Grid の設定

  • UIGrid の Arrangment を(今回は縦スクロールなので)Vertical に
  • 同じく Cell Width と Cell Height を任意で設定
  • Sorting を(縦スクロールの場合は)Vertical に

Item の設定

  • UIDragDropItem の Restriction を Horizontal に

並び替え終了時にリストのアイテムを取得する

using UnityEngine;
using System.Collections;

public class MyDragDropItem : UIDragDropItem {

	protected override void OnDragDropEnd ()
	{
		var list = mGrid.GetChildList ();
		list.ForEach (child => Debug.Log (child.name));
		base.OnDragDropEnd ();
	}
}