diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs index 0faaa739..d999ea07 100644 --- a/Assets/Scripts/LevelEditor/Editor.cs +++ b/Assets/Scripts/LevelEditor/Editor.cs @@ -25,7 +25,7 @@ namespace HeavenStudio.Editor { private Initializer Initializer; - [SerializeField] private Canvas MainCanvas; + [SerializeField] public Canvas MainCanvas; [SerializeField] public Camera EditorCamera; [SerializeField] public GameObject EditorLetterbox; diff --git a/Assets/Scripts/LevelEditor/Tooltip.cs b/Assets/Scripts/LevelEditor/Tooltip.cs index f2facb7e..241e0864 100644 --- a/Assets/Scripts/LevelEditor/Tooltip.cs +++ b/Assets/Scripts/LevelEditor/Tooltip.cs @@ -27,27 +27,33 @@ namespace HeavenStudio.Editor private void Update() { - Vector2 anchoredPosition = Input.mousePosition; + Vector3 anchoredPosition = Input.mousePosition; + Camera camera = Camera.main; + Vector3 canvasScale = Editor.instance.MainCanvas.transform.localScale; + Vector2 scale = new Vector2(canvasScale.x, canvasScale.y); + float toolTipScale = camera.pixelWidth / 1280f; - if (anchoredPosition.x + background.rect.width > canvasRect.rect.width) + if (anchoredPosition.x + background.rect.width * toolTipScale > camera.pixelWidth) { - anchoredPosition.x = canvasRect.rect.width - background.rect.width; + anchoredPosition.x = camera.pixelWidth - background.rect.width * toolTipScale; } - if (anchoredPosition.x < 0) + if (anchoredPosition.x < -camera.pixelWidth) { - anchoredPosition.x = 0; + anchoredPosition.x = -camera.pixelWidth; } - if (anchoredPosition.y + background.rect.height > canvasRect.rect.height) + if (anchoredPosition.y + background.rect.height * toolTipScale > camera.pixelHeight) { - anchoredPosition.y = canvasRect.rect.height - background.rect.height; + anchoredPosition.y = camera.pixelHeight - background.rect.height * toolTipScale; } - if (anchoredPosition.y < 0) + if (anchoredPosition.y < -camera.pixelHeight) { - anchoredPosition.y = 0; + anchoredPosition.y = -camera.pixelHeight; } - rectTransform.anchoredPosition = anchoredPosition; + anchoredPosition.z = camera.nearClipPlane; + anchoredPosition = camera.ScreenToWorldPoint(anchoredPosition); + rectTransform.anchoredPosition = anchoredPosition / scale; } public static void OnEnter(string tooltipText, string altTooltipText)