Можно ли двигать MouseCursor из скрипта?

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

Можно ли двигать MouseCursor из скрипта?

Сообщение Paul Siberdt 24 авг 2009, 16:50

Всем доброго времени суток.
Ситуация:
В интерфейсе предполагаются режимы с обзором мышки и управлении экранным курсором.
Соответственно, в нужный момент я скрываю/возвращаю курсор командой Screen.lockCursor
Особенность команды в том, что она центрует курсор. Потому, теряется позиция курсора перед переключением режимов.

Вопрос:
Есть ли в Unity3D возможность двигать (возвращать в позицию до смены режима) курсор (Input.mousePosition нельзя редактировать) из скрипта?

Спасибо.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение gnoblin 24 авг 2009, 17:55

Прячьте системный курсор, выводите GUI.Box со своей картинкой и делайте дальше что хотите 8-x .
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение Neodrop 24 авг 2009, 20:34

Можно через обращения к user32.dll кажись. Где то тут на форуме я клал пример.
Но это только для Windows.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение gnoblin 24 авг 2009, 21:35

И только для вебплеера?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение Neodrop 24 авг 2009, 22:08

Почему это? Для Standalone тоже в полный рост. :-?
Я, кстати, именно для тебя этот пример делал.

Но для этого нужно использовать DllImport, а следовательно - нужна PRO лицензия. Ну или аспирин.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение Paul Siberdt 24 авг 2009, 22:44

Всем спасибо :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение gnoblin 24 авг 2009, 22:56

Давно было, забыл).
Еще б тогда для мака найти аналог - и тогда вообще зашибись способ.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Можно ли двигать MouseCursor из скрипта?

Сообщение gnoblin 26 фев 2010, 14:02

Вот еще один вариант (чем он лучше варианта от Неодропа я не совсем понял...), пускай лежит:

(взято из http://forum.unity3d.com/viewtopic.php?p=274466#274466)

Синтаксис:
Используется csharp
[DllImport( "user32.dll", CharSet = CharSet.Auto, ExactSpelling = true )]
[return: MarshalAs( UnmanagedType.Bool )]
public static extern bool ClipCursor( ref RECT rcClip );
[DllImport( "user32.dll" )]
[return: MarshalAs( UnmanagedType.Bool )]
public static extern bool GetClipCursor( out RECT rcClip );
[DllImport( "user32.dll" )]
static extern int GetForegroundWindow( );
[DllImport("user32.dll")]
[return: MarshalAs( UnmanagedType.Bool )]
static extern bool GetWindowRect( int hWnd, ref RECT lpRect );

[StructLayout( LayoutKind.Sequential )]
public struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
    public RECT( int left, int top, int right, int bottom )
    {
        Left = left;
        Top = top;
        Right = right;
        Bottom = bottom;
    }
}

RECT currentClippingRect;
RECT originalClippingRect = new RECT( );

void Start()
{
    hndl = GetForegroundWindow( );
    GetWindowRect( hndl, ref currentClippingRect );
    GetClipCursor( out originalClippingRect );
    ClipCursor( ref currentClippingRect);
}

void OnApplicationQuit()
{
    ClipCursor( ref originalClippingRect );
}
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт


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

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

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