Отставание мышки на 1 кадр

Программирование на Юнити.

Отставание мышки на 1 кадр

Сообщение Tilk 06 май 2012, 15:33

Всем добрый день.

Пишу свое перетаскивание окошек 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();
                        }
                }
        }
}
 
Аватара пользователя
Tilk
UNец
 
Сообщения: 1
Зарегистрирован: 06 май 2012, 15:28

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8