Vector2 DrawUnitList(float startX, float startY, List <UnitTower> towerList) { float width = 260; if (minimiseList) { width = 60; } if (!minimiseList) { if (GUI.Button(new Rect(startX + 180, startY - 20, 40, 18), "up")) { if (selectID > 0) { UnitTower tower = towerList[selectID]; towerList[selectID] = towerList[selectID - 1]; towerList[selectID - 1] = tower; selectID -= 1; if (selectID * 35 < scrollPos1.y) { scrollPos1.y = selectID * 35; } } } if (GUI.Button(new Rect(startX + 222, startY - 20, 40, 18), "down")) { if (selectID < towerList.Count - 1) { UnitTower tower = towerList[selectID]; towerList[selectID] = towerList[selectID + 1]; towerList[selectID + 1] = tower; selectID += 1; if (listVisibleRect.height - 35 < selectID * 35) { scrollPos1.y = (selectID + 1) * 35 - listVisibleRect.height + 5; } } } } listVisibleRect = new Rect(startX, startY, width + 15, window.position.height - startY - 5); listContentRect = new Rect(startX, startY, width, towerList.Count * 35 + 5); GUI.color = new Color(.8f, .8f, .8f, 1f); GUI.Box(listVisibleRect, ""); GUI.color = Color.white; scrollPos1 = GUI.BeginScrollView(listVisibleRect, scrollPos1, listContentRect); //Debug.Log(scrollPos1.y+" "+selectID*35+" "+(scrollPos1.y+visibleRect.width)); startY += 5; startX += 5; for (int i = 0; i < towerList.Count; i++) { EditorUtilities.DrawSprite(new Rect(startX, startY + (i * 35), 30, 30), towerList[i].iconSprite); if (minimiseList) { if (selectID == i) { GUI.color = new Color(0, 1f, 1f, 1f); } if (GUI.Button(new Rect(startX + 35, startY + (i * 35), 30, 30), "")) { SelectTower(i); } GUI.color = Color.white; continue; } if (selectID == i) { GUI.color = new Color(0, 1f, 1f, 1f); } if (GUI.Button(new Rect(startX + 35, startY + (i * 35), 150, 30), towerList[i].unitName)) { SelectTower(i); } GUI.color = Color.white; if (deleteID == i) { if (GUI.Button(new Rect(startX + 190, startY + (i * 35), 60, 15), "cancel")) { deleteID = -1; } GUI.color = Color.red; if (GUI.Button(new Rect(startX + 190, startY + (i * 35) + 15, 60, 15), "confirm")) { if (selectID >= deleteID) { SelectTower(Mathf.Max(0, selectID - 1)); } EditorDBManager.RemoveTower(deleteID); deleteID = -1; } GUI.color = Color.white; } else { if (GUI.Button(new Rect(startX + 190, startY + (i * 35), 60, 15), "remove")) { deleteID = i; } } } GUI.EndScrollView(); return(new Vector2(startX + width, startY)); }