void OnGUI() { if (window == null) { Init(); } List <UnitTower> towerList = EditorDBManager.GetTowerList(); if (GUI.Button(new Rect(window.position.width - 120, 5, 100, 25), "Save")) { EditorDBManager.SetDirtyTower(); } EditorGUI.LabelField(new Rect(5, 7, 150, 17), "Add new tower:"); UnitTower newTower = null; newTower = (UnitTower)EditorGUI.ObjectField(new Rect(100, 7, 140, 17), newTower, typeof(UnitTower), false); if (newTower != null) { int newSelectID = EditorDBManager.AddNewTower(newTower); if (newSelectID != -1) { SelectTower(newSelectID); } } float startX = 5; float startY = 50; if (minimiseList) { if (GUI.Button(new Rect(startX, startY - 20, 30, 18), ">>")) { minimiseList = false; } } else { if (GUI.Button(new Rect(startX, startY - 20, 30, 18), "<<")) { minimiseList = true; } } Vector2 v2 = DrawUnitList(startX, startY, towerList); startX = v2.x + 25; if (towerList.Count == 0) { return; } selectID = Mathf.Clamp(selectID, 0, towerList.Count - 1); cont = new GUIContent("Tower Prefab:", "The prefab object of the tower\nClick this to highlight it in the ProjectTab"); EditorGUI.LabelField(new Rect(startX, startY, width, height), cont); EditorGUI.ObjectField(new Rect(startX + 90, startY, 185, height), towerList[selectID].gameObject, typeof(GameObject), false); cont = new GUIContent("Disable in BuildManager:", "When checked, tower won't appear on BuildManager list and thus can't be built\nThis is to mark towers that can only be upgrade from a built tower or unlock from perk"); EditorGUI.LabelField(new Rect(startX + 295, startY, width, height), cont); towerList[selectID].disableInBuildManager = EditorGUI.Toggle(new Rect(startX + 440, startY, 185, height), towerList[selectID].disableInBuildManager); startY += spaceY + 10; Rect visibleRect = new Rect(startX, startY, window.position.width - startX - 10, window.position.height - startY - 5); Rect contentRect = new Rect(startX, startY, contentWidth - startY, contentHeight); //~ GUI.color=new Color(.8f, .8f, .8f, 1f); //~ GUI.Box(visibleRect, ""); //~ GUI.color=Color.white; scrollPos2 = GUI.BeginScrollView(visibleRect, scrollPos2, contentRect); v2 = DrawUnitConfigurator(startX, startY, towerList); contentWidth = v2.x; contentHeight = v2.y; GUI.EndScrollView(); if (GUI.changed) { EditorDBManager.SetDirtyTower(); } }