Пишу свое перетаскивание окошек GUI. При перетаскивании окно отстает на 1 кадр от мышки. Подскажите пожалуйста как поправить это, чтобы при перетаскивании мышь жестко с моим окном была связана.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class GameplayInterface : MonoBehaviour
{
private CharacterStatsWindow StatsWindow = new CharacterStatsWindow();
private MainPanelWindow MainPanel = new MainPanelWindow();
Dictionary<int, BasicWindow> WindowList = new Dictionary<int, BasicWindow>();
private bool isLeftButtonDown = false;
private int OldMouseX;
private int OldMouseY;
private int MouseDeltaX = 0;
private int MouseDeltaY = 0;
void Start ()
{
OldMouseX = (int)Input.mousePosition.x;
OldMouseY = (int)Input.mousePosition.y;
WindowList.Add(0, StatsWindow);
WindowList.Add(1, MainPanel);
StatsWindow.SetPos(200, 200);
StatsWindow.SetSize(200, 300);
MainPanel.SetPos(0,0);
MainPanel.SetSize(300, 100);
}
void Update ()
{
MouseDeltaX = (int)Input.mousePosition.x - OldMouseX;
MouseDeltaY = (int)Input.mousePosition.y - OldMouseY;
if(Input.GetMouseButtonDown(0))
{
isLeftButtonDown = true;
}
if(Input.GetMouseButtonUp(0))
{
isLeftButtonDown = false;
}
if(isLeftButtonDown)
{
StatsWindow.SetPos(StatsWindow.xpos + MouseDeltaX, StatsWindow.ypos - MouseDeltaY);
}
OldMouseX=(int)Input.mousePosition.x;
OldMouseY=(int)Input.mousePosition.y;
}
void OnGUI()
{
BasicWindow CurrentWindow;
for(int cnt = 0;cnt < 10;cnt++)
{
if(WindowList.TryGetValue(cnt, out CurrentWindow))
{
CurrentWindow.Display();
}
}
}
}
using System.Collections;
using System.Collections.Generic;
public class GameplayInterface : MonoBehaviour
{
private CharacterStatsWindow StatsWindow = new CharacterStatsWindow();
private MainPanelWindow MainPanel = new MainPanelWindow();
Dictionary<int, BasicWindow> WindowList = new Dictionary<int, BasicWindow>();
private bool isLeftButtonDown = false;
private int OldMouseX;
private int OldMouseY;
private int MouseDeltaX = 0;
private int MouseDeltaY = 0;
void Start ()
{
OldMouseX = (int)Input.mousePosition.x;
OldMouseY = (int)Input.mousePosition.y;
WindowList.Add(0, StatsWindow);
WindowList.Add(1, MainPanel);
StatsWindow.SetPos(200, 200);
StatsWindow.SetSize(200, 300);
MainPanel.SetPos(0,0);
MainPanel.SetSize(300, 100);
}
void Update ()
{
MouseDeltaX = (int)Input.mousePosition.x - OldMouseX;
MouseDeltaY = (int)Input.mousePosition.y - OldMouseY;
if(Input.GetMouseButtonDown(0))
{
isLeftButtonDown = true;
}
if(Input.GetMouseButtonUp(0))
{
isLeftButtonDown = false;
}
if(isLeftButtonDown)
{
StatsWindow.SetPos(StatsWindow.xpos + MouseDeltaX, StatsWindow.ypos - MouseDeltaY);
}
OldMouseX=(int)Input.mousePosition.x;
OldMouseY=(int)Input.mousePosition.y;
}
void OnGUI()
{
BasicWindow CurrentWindow;
for(int cnt = 0;cnt < 10;cnt++)
{
if(WindowList.TryGetValue(cnt, out CurrentWindow))
{
CurrentWindow.Display();
}
}
}
}