static void SpawnObject(int i, bool isPlusButton) { if (!isPlusButton) { try { TileEditorData data = tileData[i].GetComponent <TileEditorData>(); string idstring = data.ID.ToString(); string overwriteidstring = data.OVERWRITEID.ToString(); Sprite sprite = data.SPRITE; Texture2D tex = null; tex = ConvertSpriteToTexture(sprite); GUILayout.BeginHorizontal(); if (tex != null) { if (GUILayout.Button(tex, GUILayout.MinHeight((tileSize.y / 100) * 60), GUILayout.MinWidth((tileSize.x / 100) * 60))) { OnEditButtonPress(i); } } else { if (GUILayout.Button("Edit", GUILayout.MinHeight((tileSize.y / 100) * 60), GUILayout.MinWidth((tileSize.x / 100) * 60))) { OnEditButtonPress(i); } } GUILayout.BeginVertical(); if (GUILayout.Button("X")) { SpawnObject(i, true); AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(filteredObjects[i])); refreshAtEnd = true; } try { GUILayout.Label(idstring); tileData[i].GetComponent <TileEditorData>().OVERWRITEID = int.Parse(GUILayout.TextField(overwriteidstring)); } catch { } GUILayout.EndVertical(); GUILayout.EndHorizontal(); } catch { } } else { if (GUILayout.Button("+", GUILayout.MinHeight((tileSize.y / 100) * 95), GUILayout.MinWidth((tileSize.x / 100) * 95))) { AddNewGameObject(i); } } }
void Start() { GameObject[] loadedObjects = (GameObject[])Resources.LoadAll <GameObject>("TileData") as GameObject[]; for (int i = 0; i < loadedObjects.Length; i++) { tileObjects.Add(loadedObjects[i] as GameObject); TileEditorData data = loadedObjects[i].GetComponent <TileEditorData>(); tileStorage.Add(data.ID, new Tile(data.ID, MakeListFromArray <GameObject>(data.CUSTOMSCRIPTS), data.NEEDSUPDATE, data.SPRITE)); } }
static void Save(GameObject overWriteObject, TileEditorData data) { int overwriteid = data.OVERWRITEID; TileEditorData dat = overWriteObject.GetComponent <TileEditorData>(); AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(overWriteObject), "TileObject" + (overwriteid)); dat.ID = data.OVERWRITEID; dat.NEEDSUPDATE = data.NEEDSUPDATE; dat.SPRITE = data.SPRITE; dat.CUSTOMSCRIPTS = data.CUSTOMSCRIPTS; dat.TILETITLE = data.TILETITLE; PrefabUtility.SavePrefabAsset(overWriteObject.gameObject); //"Assets/Resources/TileData/TileObject" + (i + 1).ToString() + ".prefab" }
void OnGUI() { GUILayout.BeginVertical(); if (!showTileEditor) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Refresh", GUILayout.Width(120))) { Refresh(); } if (GUILayout.Button("Rewrite", GUILayout.Width(120))) { Rewrite(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Size: ", GUILayout.MaxWidth(40)); size = GUILayout.HorizontalSlider(tileSize.x, 50, 200, GUILayout.MaxWidth(150)); if (GUILayout.Button("Reset Size")) { size = 100; } tileSize.x = size; tileSize.y = size; GUILayout.EndHorizontal(); scrollPos = GUILayout.BeginScrollView(scrollPos, GUILayout.Height(window.position.size.y - 100), GUILayout.Width(window.position.size.x - 5)); GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxHeight(window.position.size.y - 100), GUILayout.MaxWidth(window.position.size.x - 5)); SpawnObjects(); GUILayout.EndVertical(); GUILayout.EndScrollView(); } else { if (GUILayout.Button("Back", GUILayout.Width(120))) { Refresh(); } TileEditorData data = loadedData.GetComponent <TileEditorData>(); GUILayout.BeginVertical(EditorStyles.helpBox, GUILayout.MaxHeight(window.position.size.y - 100), GUILayout.MaxWidth(window.position.size.x - 5)); GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5)); GUILayout.Label("Tile ID = ", GUILayout.MaxWidth(90)); GUILayout.Label(data.ID.ToString(), GUILayout.MaxWidth(60)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5)); GUILayout.Label("Overwrite ID = ", GUILayout.MaxWidth(90)); data.OVERWRITEID = int.Parse(GUILayout.TextField(data.OVERWRITEID.ToString(), GUILayout.MaxWidth(200))); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5)); GUILayout.Label("Tile Name = ", GUILayout.MaxWidth(90)); data.TILETITLE = GUILayout.TextField(data.TILETITLE.ToString(), GUILayout.MaxWidth(200)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxWidth(400)); data.SPRITE = (Sprite)EditorGUILayout.ObjectField("Sprite", data.SPRITE, typeof(Sprite), allowSceneObjects: false); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(25), GUILayout.MaxWidth(window.position.size.x - 5)); GUILayout.Label("needs update", GUILayout.MaxWidth(90)); data.NEEDSUPDATE = EditorGUILayout.Toggle(data.NEEDSUPDATE); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(EditorStyles.helpBox, GUILayout.MaxHeight(200), GUILayout.MaxWidth(window.position.size.x - 5)); //additional data GUILayout.BeginVertical(); if (tickonce) { tickonce = false; serializedObj = new SerializedObject(data); list = new ReorderableList(serializedObj, serializedObj.FindProperty("customScripts"), true, true, true, true); list.drawHeaderCallback = (rect) => EditorGUI.LabelField(rect, "custom Scripts"); list.drawElementCallback = (Rect rect1, int index, bool isActive, bool isFocused) => { rect1.y += 2; rect1.height = EditorGUIUtility.singleLineHeight; //EditorGUI.PropertyField(rect1, list.serializedProperty.GetArrayElementAtIndex(index), false); data.customScripts[index] = (GameObject)EditorGUI.ObjectField(rect1, data.customScripts[index], typeof(GameObject), allowSceneObjects: false); }; } serializedObj.Update(); list.DoLayoutList(); serializedObj.ApplyModifiedProperties(); if (GUILayout.Button("Save", GUILayout.Width(120))) { Save(objects[tileData.IndexOf(data.gameObject)], data); Refresh(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.EndVertical(); }