Unity3d 如何模拟鼠标移动事件?

Unity3d 如何模拟鼠标移动事件?,unity3d,Unity3d,我的代码中有一个错误:当我将鼠标从屏幕上释放出来时,unity无法检测到“GetMouseButtonUp”,当我将释放的鼠标移回屏幕时,它检测到“GetMouseButton”,而这不应该发生 所以当鼠标离开屏幕时,我想模拟发送一个mouse up事件,让unity检测“GetMouseButtonUp” 如何模拟鼠标事件?伪代码 bool mouseIsDown = false; public void Update() { Rect screenRect = new Rect(-

我的代码中有一个错误:当我将鼠标从屏幕上释放出来时,unity无法检测到“GetMouseButtonUp”,当我将释放的鼠标移回屏幕时,它检测到“GetMouseButton”,而这不应该发生

所以当鼠标离开屏幕时,我想模拟发送一个mouse up事件,让unity检测“GetMouseButtonUp”

如何模拟鼠标事件?

伪代码

bool mouseIsDown = false;

public void Update()
{
    Rect screenRect = new Rect(-Screen.width/2, -Screen.height/2, Screen.width, Screen.height);

    If(screenRect.Contains(Input.mousePosition))
    {
        if(mouseIsDown && !Input.GetMouseButton(0))
            OnMouseUp();

        if(Input.GetMouseButton(0))
        {
            OnMouse();
            if(!mouseIsDown)
            {
                OnMouseDown();
                mouseIsDown = true;
            }
        }
    }
}

public void OnMouseDown()
{
    // Do something
}

public void OnMouse()
{
    // Do something
}

public void OnMouseUp()
{
    // Do something
}
伪码

bool mouseIsDown = false;

public void Update()
{
    Rect screenRect = new Rect(-Screen.width/2, -Screen.height/2, Screen.width, Screen.height);

    If(screenRect.Contains(Input.mousePosition))
    {
        if(mouseIsDown && !Input.GetMouseButton(0))
            OnMouseUp();

        if(Input.GetMouseButton(0))
        {
            OnMouse();
            if(!mouseIsDown)
            {
                OnMouseDown();
                mouseIsDown = true;
            }
        }
    }
}

public void OnMouseDown()
{
    // Do something
}

public void OnMouse()
{
    // Do something
}

public void OnMouseUp()
{
    // Do something
}

我不确定我是否正确理解了你的问题。但是,您可以像使用
Start()
Update()
Awake()
等函数一样使用这些函数

void OnMouseUp () {
}

void OnMouseDown (){
}

我不确定我是否正确理解了你的问题。但是,您可以像使用
Start()
Update()
Awake()
等函数一样使用这些函数

void OnMouseUp () {
}

void OnMouseDown (){
}

这只发生在编辑器中吗?不,只有当我将我的webgl链接连接到facebook应用程序,并通过facebook玩游戏时才会发现它。但当我通过我的webgl链接玩游戏时,这不会发生。所以我很困惑,嗯。。您是否可以使用OnApplicationFocus(bool),并查看在拖动或移动屏幕指针时是否使用值false调用它?如果有,问题就解决了。否则,可能必须使用Camera.screentoviewportpoint这是否仅在编辑器中发生?不,只有当我将我的webgl链接连接到facebook应用程序,并通过facebook玩游戏时,才会出现此错误。但当我通过我的webgl链接玩游戏时,这不会发生。所以我很困惑,嗯。。您是否可以使用OnApplicationFocus(bool),并查看在拖动或移动屏幕指针时是否使用值false调用它?如果有,问题就解决了。否则,可能必须使用Camera.screentoviewportpoint。我认为这些功能仅在游戏对象具有碰撞器组件时才起作用,并且仅适用于此游戏对象。是吗?是的,这是真的,游戏对象确实需要一个碰撞器,并且只有当鼠标按钮在游戏对象上按下并附加脚本时才会触发碰撞器。我认为这些功能只有在游戏对象具有碰撞器组件时才起作用,并且仅适用于此游戏对象。是吗?是的,这是真的,游戏对象确实需要一个对撞机,只有当鼠标按钮在游戏对象上按下并附加脚本时,才会触发对撞机。问题是,有时当鼠标移出游戏然后释放时,我无法检测到“GetMouseButtonUp”。当它向后移动(已经释放)时,unity检测到“GetMouseButton”状态。好吧,我想我现在明白了,现在试试问题是,有时候当鼠标移出游戏然后释放时,我无法检测到“GetMouseButtonUp”。当它向后移动(已经发布)时,unity检测“GetMouseButton”状态。好的,我想我现在明白了,现在试试