public override void OnInspectorGUI() { // Start custom Inspector serializedObject.Update(); EditorGUI.BeginChangeCheck(); // Reset button m_controlRect = EditorGUILayout.GetControlRect(); if (GUI.Button(new Rect(m_controlRect.width - 73, -26, 45, 18), m_guiContent[6])) { m_target.ResetAsset(); } GUILayout.Space(-20); // Settings section EditorGUILayout.LabelField("Settings", (GUIStyle)"DD Background"); // (GUIStyle)"SelectionRect", (GUIStyle)"dockareaStandalone" GUILayout.Space(-4); // Tile size popup EditorGUILayout.BeginHorizontal("Box"); m_tileSize = EditorGUILayout.IntPopup(m_guiContent[0], m_target.tileSize, m_tileSizeContentArray, m_tileSizeArray); EditorGUILayout.EndHorizontal(); // Conversion section EditorGUILayout.LabelField("Conversion", (GUIStyle)"DD Background"); // (GUIStyle)"ObjectPickerResultsEven", (GUIStyle)"LODSliderRangeSelected" GUILayout.Space(-4); // Texture field for the diffuse tileset atlas EditorGUILayout.BeginVertical("Box"); EditorGUILayout.HelpBox(m_guiContent[8].tooltip, MessageType.Info); GUI.color = m_greenColor; if (!m_atlasTexture.objectReferenceValue) { GUI.color = m_redColor; } EditorGUILayout.PropertyField(m_atlasTexture, m_guiContent[1]); GUI.color = Color.white; // Grid offset EditorGUILayout.PropertyField(m_gridOffset, m_guiContent[2]); // Extract number EditorGUILayout.PropertyField(m_extractNumber, m_guiContent[7]); // Button to convert the atlas texture to separate tiles and save it as .asset file if (GUILayout.Button(m_guiContent[4])) { m_target.ConvertAtlasToTiles(); } // Delete tile assets button if (GUILayout.Button(m_guiContent[5])) { m_target.DeleteTiles(); } EditorGUILayout.EndVertical(); // Tileset data section EditorGUILayout.LabelField("Tileset Data", (GUIStyle)"DD Background"); GUILayout.Space(-4); // Build 3D tileset data EditorGUILayout.BeginVertical("Box"); //if (GUILayout.Button(m_guiContent[6])) // m_target.BuildDiffuseTilesetData(); // Tile grid m_scrollPos = EditorGUILayout.BeginScrollView(m_scrollPos); EditorGUILayout.LabelField("", GUILayout.Width(442)); GUILayout.Space(-20); for (int vertical = 0; vertical < 256;) { m_controlRect = EditorGUILayout.GetControlRect(GUILayout.Width(24), GUILayout.Height(24)); EditorGUILayout.BeginHorizontal(); for (int horizontal = 0; horizontal < 16; horizontal++) { m_tileTexture = m_target.temporaryTileTextureArray[vertical] ? m_target.temporaryTileTextureArray[vertical] : emptyIconTexture; GUI.DrawTexture(m_controlRect, m_tileTexture, ScaleMode.StretchToFill, true, 0); m_controlRect.x += 28; vertical++; } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Used Slots: " + m_target.tilesCount.ToString()); GUILayout.FlexibleSpace(); GUILayout.Label("Free Slots: " + (256 - m_target.tilesCount).ToString()); EditorGUILayout.EndHorizontal(); // End custom Inspector if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_target, "3D Tilemap System"); serializedObject.ApplyModifiedProperties(); m_target.tileSize = m_tileSize; } }