void OnSelectionChange() { if (window == null) { return; } srlObj = null; selectedUnitList = new List <UnitPlayer>(); UnityEngine.Object[] filtered = Selection.GetFiltered(typeof(UnitPlayer), SelectionMode.Editable); for (int i = 0; i < filtered.Length; i++) { selectedUnitList.Add((UnitPlayer)filtered[i]); } //if no no relevent object is selected if (selectedUnitList.Count == 0) { SelectItem(); if (unitPlayerDB.unitList.Count > 0 && selectID >= 0) { UpdateObjectHierarchyList(unitPlayerDB.unitList[selectID].gameObject); } } else { //only one relevent object is selected if (selectedUnitList.Count == 1) { //if the selected object is a prefab and match the selected item in editor, do nothing if (selectID > 0 && selectedUnitList[0] == unitPlayerDB.unitList[selectID]) { UpdateObjectHierarchyList(selectedUnitList[0].gameObject); } //if the selected object doesnt match... else { //if the selected object existed in DB if (TDSEditor.ExistInDB(selectedUnitList[0])) { window.selectID = TDSEditor.GetUnitPlayerIndex(selectedUnitList[0].prefabID) - 1; UpdateObjectHierarchyList(selectedUnitList[0].gameObject); SelectItem(); } //if the selected object is not in DB else { selectID = -1; UpdateObjectHierarchyList(selectedUnitList[0].gameObject); } } } //selected multiple editable object else { selectID = -1; UpdateObjectHierarchyList(selectedUnitList[0].gameObject); } srlObj = new SerializedObject(filtered); } Repaint(); }