diff --git a/Assets/Scenes/LevelEditorScene.unity b/Assets/Scenes/LevelEditorScene.unity index 45dcf6e..07ebf99 100644 --- a/Assets/Scenes/LevelEditorScene.unity +++ b/Assets/Scenes/LevelEditorScene.unity @@ -5418,6 +5418,9 @@ GameObject: - component: {fileID: 678214373} - component: {fileID: 678214375} - component: {fileID: 678214374} + - component: {fileID: 678214378} + - component: {fileID: 678214377} + - component: {fileID: 678214376} m_Layer: 5 m_Name: Save m_TagString: Untagged @@ -5482,6 +5485,89 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 678214372} m_CullTransparentMesh: 1 +--- !u!114 &678214376 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678214372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 678214374} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 678214377} + m_TargetAssemblyTypeName: JSONExporter, Assembly-CSharp + m_MethodName: ExportJSON + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &678214377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678214372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d3227fe18f4441647bdd19d3131efa02, type: 3} + m_Name: + m_EditorClassIdentifier: + statusText: {fileID: 0} +--- !u!114 &678214378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 678214372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f5bf592d3d8430744a08058675701934, type: 3} + m_Name: + m_EditorClassIdentifier: + blockGroupContainer: {fileID: 0} + buttonPrefabTemplate: {fileID: 0} --- !u!1 &739948034 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/JSONExporter.cs b/Assets/Scripts/JSONExporter.cs index 7845d31..9262b13 100644 --- a/Assets/Scripts/JSONExporter.cs +++ b/Assets/Scripts/JSONExporter.cs @@ -5,12 +5,17 @@ using System.Collections.Generic; using SimpleFileBrowser; using TMPro; +#if UNITY_EDITOR +using UnityEditor; +#endif + [RequireComponent(typeof(LevelEditor))] public class JSONExporter : MonoBehaviour { public TMP_Text statusText; private LevelEditor editor; private string levelsFolder; + private string assetFolderPath; private void Awake() { @@ -19,6 +24,8 @@ public class JSONExporter : MonoBehaviour if (!Directory.Exists(levelsFolder)) Directory.CreateDirectory(levelsFolder); + assetFolderPath = "Assets/Resources/Levels"; + if (statusText == null) { var statusObj = GameObject.Find("StatusText"); @@ -104,36 +111,33 @@ public class JSONExporter : MonoBehaviour { Debug.LogError("Export error: " + e); SetStatus("Export error. See console.", Color.red); + yield break; } #if UNITY_EDITOR - UnityEditor.AssetDatabase.Refresh(); + string assetPath = Path.Combine(assetFolderPath, fileName + ".json"); + AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate); #endif - var loader = Object.FindAnyObjectByType(); - if (loader != null) - loader.RefreshLevels(); + + var loader = FindObjectOfType(); + loader?.RefreshLevels(); } private void SetStatus(string message, Color color) { - if (statusText != null) - { - statusText.text = message; - statusText.color = color; - statusText.gameObject.SetActive(false); - statusText.gameObject.SetActive(true); - Canvas.ForceUpdateCanvases(); - } + if (statusText == null) return; + statusText.text = message; + statusText.color = color; + statusText.gameObject.SetActive(false); + statusText.gameObject.SetActive(true); + Canvas.ForceUpdateCanvases(); } [System.Serializable] private class SerializableElement { public string type; - public float x; - public float y; - public float scaleX; - public float scaleY; + public float x, y, scaleX, scaleY; } [System.Serializable]