#if UNITY_EDITOR using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using UnityEngine.UI; using TMPro; using Cinemachine; using UnityEngine.SceneManagement; using UnityEditor.SceneManagement; using UnityEngine.EventSystems; using UnityEditor.Experimental.SceneManagement; using System; using SimpleTools.AudioManager; using SimpleTools.DialogueSystem; using SimpleTools.Cinemachine; using SimpleTools.SceneManagement; using SimpleTools.Menu; public class ToolsEditor{ [MenuItem("GameObject/Simple Tools/AudioManager", false, 10)] static void CreateAudioManager(){ GameObject audioManager = new GameObject("AudioManager"); audioManager.AddComponent(); } [MenuItem("GameObject/Simple Tools/Dialogue System", false, 10)] static void CreateDialogueSystem(){ GameObject dialogueCanvas = new GameObject("DialogueCanvas"); dialogueCanvas.AddComponent(); Canvas canvas = dialogueCanvas.AddComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; dialogueCanvas.AddComponent(); dialogueCanvas.AddComponent(); GameObject text = new GameObject("DialogueText"); text.transform.SetParent(dialogueCanvas.transform); text.AddComponent().text = "Dialogue"; text.GetComponent().anchoredPosition = Vector2.zero; GameObject name = new GameObject("NameText"); name.transform.SetParent(dialogueCanvas.transform); name.AddComponent().text = "Name"; name.GetComponent().anchoredPosition = Vector2.up * 50f; GameObject image = new GameObject("Image"); image.transform.SetParent(dialogueCanvas.transform); image.AddComponent(); image.GetComponent().anchoredPosition = new Vector2(-150f, 25f); DialogueManager dialogueManager = dialogueCanvas.AddComponent(); Debug.Log(dialogueManager.dialogueItems); dialogueManager.dialogueItems.textBox = text.GetComponent(); dialogueManager.dialogueItems.characterName = name.GetComponent(); dialogueManager.dialogueItems.characterImage = image.GetComponent(); dialogueManager.dialogueItems.canvas = canvas; //DialogueSystem dialogueSystem = dialogueCanvas.AddComponent(); //dialogueSystem.nameText = name.GetComponent(); //dialogueSystem.dialogue = text.GetComponent(); //dialogueSystem.faceImage = image.GetComponent(); //dialogueSystem.nameField = name; } [MenuItem("GameObject/Simple Tools/Camera Trigger/2D", false, 10)] static void CreateCameraTrigger2D(){ GameObject cameraTrigger = new GameObject("CameraTrigger2D"); cameraTrigger.AddComponent(); cameraTrigger.AddComponent(); GameObject vCam = new GameObject("CM vcam1"); vCam.transform.SetParent(cameraTrigger.transform); vCam.SetActive(false); CinemachineVirtualCamera cam = vCam.AddComponent(); cam.m_Lens.Orthographic = true; } [MenuItem("GameObject/Simple Tools/Camera Trigger/3D", false, 10)] static void CreateCameraTrigger3D(){ GameObject cameraTrigger = new GameObject("CameraTrigger3D"); cameraTrigger.AddComponent(); cameraTrigger.AddComponent(); GameObject vCam = new GameObject("CM vcam1"); vCam.transform.SetParent(cameraTrigger.transform); vCam.SetActive(false); CinemachineVirtualCamera cam = vCam.AddComponent(); cam.m_Lens.FieldOfView = 60f; } #if CINEMACHINE_271_OR_NEWER [MenuItem("GameObject/Simple Tools/ScreenShake Camera/2D", false, 10)] static void CreateScreenShakeCamera2d(){ GameObject screenShakeCamera = new GameObject("ScreenShakeCamera"); CinemachineVirtualCamera vCam = screenShakeCamera.AddComponent(); vCam.m_Lens.ModeOverride = LensSettings.OverrideModes.Orthographic; CinemachineBasicMultiChannelPerlin shake = vCam.AddCinemachineComponent(); NoiseSettings noise = (NoiseSettings)AssetDatabase.LoadAssetAtPath("Packages/com.unity.cinemachine/Presets/Noise/6D Shake.asset", typeof(NoiseSettings)); shake.m_NoiseProfile = noise; shake.m_AmplitudeGain = 0f; shake.m_FrequencyGain = 1f; } [MenuItem("GameObject/Simple Tools/ScreenShake Camera/3D", false, 10)] static void CreateScreenShakeCamera3d(){ GameObject screenShakeCamera = new GameObject("ScreenShakeCamera"); CinemachineVirtualCamera vCam = screenShakeCamera.AddComponent(); vCam.m_Lens.ModeOverride = LensSettings.OverrideModes.Perspective; CinemachineBasicMultiChannelPerlin shake = vCam.AddCinemachineComponent(); NoiseSettings noise = (NoiseSettings)AssetDatabase.LoadAssetAtPath("Packages/com.unity.cinemachine/Presets/Noise/6D Shake.asset", typeof(NoiseSettings)); shake.m_NoiseProfile = noise; shake.m_AmplitudeGain = 0f; shake.m_FrequencyGain = 1f; } #else [MenuItem("GameObject/Simple Tools/ScreenShake Camera", false, 10)] static void CreateScreenShakeCamera2d(){ GameObject screenShakeCamera = new GameObject("ScreenShakeCamera"); CinemachineVirtualCamera vCam = screenShakeCamera.AddComponent(); CinemachineBasicMultiChannelPerlin shake = vCam.AddCinemachineComponent(); NoiseSettings noise = (NoiseSettings)AssetDatabase.LoadAssetAtPath("Packages/com.unity.cinemachine/Presets/Noise/6D Shake.asset", typeof(NoiseSettings)); shake.m_NoiseProfile = noise; shake.m_AmplitudeGain = 0f; shake.m_FrequencyGain = 1f; } #endif [MenuItem("Assets/Create/Simple Tools/Create Loading Scene")] [MenuItem("Simple Tools/Create Loading Scene")] static void CreateLoadingScene(){ EditorSceneManager.SaveOpenScenes(); Scene loadingScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); loadingScene.name = "Loading"; GameObject loaderCallback = new GameObject("LoaderCallback"); loaderCallback.AddComponent(); GameObject canvasObj = new GameObject("Canvas"); Canvas canvas = canvasObj.AddComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; CanvasScaler canvasScaler = canvasObj.AddComponent(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2Int(951, 535); canvasScaler.matchWidthOrHeight = 1f; canvasObj.AddComponent(); TextMeshProUGUI loadingText = new GameObject("LoadingText").AddComponent(); loadingText.transform.SetParent(canvasObj.transform); RectTransform loadingTextTransform = loadingText.GetComponent(); loadingTextTransform.anchoredPosition = new Vector2Int(-333, -212); loadingTextTransform.sizeDelta = new Vector2Int(237, 52); loadingText.text = "LOADING..."; Image bg = new GameObject("bg").AddComponent(); bg.transform.SetParent(canvasObj.transform); RectTransform bgTransform = bg.GetComponent(); bgTransform.anchoredPosition = new Vector2Int(0, -235); bgTransform.sizeDelta = new Vector2Int(900, 20); bg.color = new Color(36f / 255f, 36f / 255f, 36f / 255f); Image progressBar = new GameObject("ProgressBar").AddComponent(); progressBar.transform.SetParent(bg.transform); RectTransform progressBarTransform = progressBar.GetComponent(); progressBarTransform.anchoredPosition = Vector2.zero; progressBarTransform.sizeDelta = new Vector2Int(900, 20); progressBar.sprite = (Sprite)AssetDatabase.LoadAssetAtPath("Packages/com.geri.simpletools/Simple Tools/Editor/Square.png", typeof(Sprite)); progressBar.type = Image.Type.Filled; progressBar.fillMethod = Image.FillMethod.Horizontal; progressBar.fillOrigin = (int)Image.OriginHorizontal.Left; progressBar.fillAmount = 1f; progressBar.gameObject.AddComponent(); } #if UNITY_2019_3_OR_NEWER [MenuItem("Assets/Create/Simple Tools/Create Menu Scene")] [MenuItem("Simple Tools/Create Menu Scene")] static void CreateMenuScene(){ EditorSceneManager.SaveOpenScenes(); Scene menuScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); menuScene.name = "Menu"; GameObject canvasObj = new GameObject("Canvas"); Canvas canvas = canvasObj.AddComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; CreateEventSystem(false, null); CanvasScaler canvasScaler = canvasObj.AddComponent(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2Int(951, 535); canvasScaler.matchWidthOrHeight = 1f; canvasObj.AddComponent(); GameObject qualityDropdown = TMP_DefaultControls.CreateDropdown(GetStandardResources()); qualityDropdown.transform.SetParent(canvasObj.transform); RectTransform qualityRectTransform = qualityDropdown.GetComponent(); qualityRectTransform.anchoredPosition = Vector2.up * 15f; qualityDropdown.name = "QualityDropdown"; GameObject resolutionDropdown = TMP_DefaultControls.CreateDropdown(GetStandardResources()); resolutionDropdown.transform.SetParent(canvasObj.transform); RectTransform resolutionRectTransform = resolutionDropdown.GetComponent(); resolutionRectTransform.anchoredPosition = Vector2.down * 15f; resolutionDropdown.name = "ResolutionDropdown"; GameObject musicSlider; using (new FactorySwapToEditor()) musicSlider = DefaultControls.CreateSlider(GetStandardUIResources()); musicSlider.transform.SetParent(canvasObj.transform); RectTransform musicRectTransform = musicSlider.GetComponent(); musicRectTransform.anchoredPosition = Vector2.down * 40f; musicSlider.name = "MusicSlider"; GameObject sfxSlider; using (new FactorySwapToEditor()) sfxSlider = DefaultControls.CreateSlider(GetStandardUIResources()); sfxSlider.transform.SetParent(canvasObj.transform); RectTransform sfxRectTransform = sfxSlider.GetComponent(); sfxRectTransform.anchoredPosition = Vector2.down * 60; sfxSlider.name = "MusicSlider"; GameObject playButton = TMP_DefaultControls.CreateButton(GetStandardResources()); playButton.transform.SetParent(canvasObj.transform); TMP_Text playTextComponent = playButton.GetComponentInChildren(); playTextComponent.fontSize = 24; playTextComponent.text = "PLAY"; RectTransform playRectTransform = playButton.GetComponent(); playRectTransform.anchoredPosition = Vector2.up * 45f; playButton.name = "PlayButton"; GameObject quitButton = TMP_DefaultControls.CreateButton(GetStandardResources()); quitButton.transform.SetParent(canvasObj.transform); TMP_Text quitTextComponent = quitButton.GetComponentInChildren(); quitTextComponent.fontSize = 24; quitTextComponent.text = "QUIT"; RectTransform quitRectTransform = quitButton.GetComponent(); quitRectTransform.anchoredPosition = Vector2.down * 85f; quitButton.name = "QuitButton"; MenuController menuController = canvasObj.AddComponent(); Slider sliderMusic = menuController.musicSlider = musicSlider.GetComponent(); Slider sliderSfx = menuController.sfxSlider = sfxSlider.GetComponent(); TMP_Dropdown dropdownQuality = menuController.qualityDropdown = qualityDropdown.GetComponent(); TMP_Dropdown dropdownResolution = menuController.resolutionDropdown = resolutionDropdown.GetComponent(); sliderMusic.onValueChanged.AddListener(menuController.SetMusicVolume); sliderSfx.onValueChanged.AddListener(menuController.SetSfxVolume); dropdownQuality.onValueChanged.AddListener(menuController.SetQuality); dropdownResolution.onValueChanged.AddListener(menuController.SetResolution); playButton.GetComponent