📜  unity 鼠标点击 - C# 代码示例

📅  最后修改于: 2022-03-11 14:49:03.360000             🧑  作者: Mango

代码示例4
//I came up with a very legit way to move the mouse cursor and another to force a mouse click event because Unity is so annoying in not letting you do this when using Cursor.lockState. Now you can set Cursor.lockState and/or Cursor.visibility in Start() and call either of the following below to force the mouse to behave. (Verified working in macOS Big Sur, Unity 2021.1.17)

//Stupid easy way to force mouse cursor position to center of game window in editor only from code:

using UnityEngine.InputSystem;
using UnityEngine.InputSystem.LowLevel;

public static void ForceMousePositionToCenterOfGameWindow()
    {
#if UNITY_EDITOR
        // Force the mouse to be in the middle of the game screen
        var game = UnityEditor.EditorWindow.GetWindow(typeof(UnityEditor.EditorWindow).Assembly.GetType("UnityEditor.GameView"));
        Vector2 warpPosition = game.rootVisualElement.contentRect.center;  // never let it move
        Mouse.current.WarpCursorPosition(warpPosition);
        InputState.Change(Mouse.current.position, warpPosition);
#endif
    }


//Stupid easy way to force click in game window in editor only from code:
public static void ForceClickMouseButtonInCenterOfGameWindow()
    {
#if UNITY_EDITOR
        var game = UnityEditor.EditorWindow.GetWindow(typeof(UnityEditor.EditorWindow).Assembly.GetType("UnityEditor.GameView"));
        Vector2 gameWindowCenter = game.rootVisualElement.contentRect.center;

        Event leftClickDown = new Event();
        leftClickDown.button = 0;
        leftClickDown.clickCount = 1;
        leftClickDown.type = EventType.MouseDown;
        leftClickDown.mousePosition = gameWindow;

        game.SendEvent(leftClickDown);
#endif
    }