[Решено]Проблема с AddcursorRect

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

[Решено]Проблема с AddcursorRect

Сообщение Berenold 10 июн 2011, 12:10

Доброго времени суток.
Мне нужно добавить в игру курсор мышки с определенным курсором вот выдержка из справки
MouseCursor Enumeration

Custom mouse cursor shapes used with EditorGUIUtility.AddcursorRect.

Note: This is an editor class. To use it you have to place your script in Assets/Editor inside your project folder. Editor classes are in the UnityEditor namespace so for C# scripts you need to add "using UnityEditor;" at the beginning of the script.

Заходим по ссылке из справки видим
EditorGUIUtility.AddCursorRect
static function AddCursorRect (position : Rect, mouse : MouseCursor) : void
Parameters

position the rectangle the control should be shown within
mouse the mouse cursor to use
Description

Add a custom mouse pointer to a control

function OnGUI()
{
// show the "Link" cursor when the mouse is howering over this rectangle.
EditorGUIUtility.AddCursorRect (Rect(10,10,100,100), MouseCursor.Link);
}


Все вроде разжевано все понятно да вот только ошибку выдает((
Мой скрипт
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEditor;

public class NewBehaviourScript : MonoBehaviour
{
        public Texture2D linc;

        void OnGUI()
        {
                EditorGUIUtility.AddCursorRect(Rect(10, 10, 100, 100), linc);
        }
}
 


Ошибки гласят
Assets/Scripts/Mous.cs(11,48): error CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected
Assets/Scripts/Mous.cs(11,34): error CS1502: The best overloaded method match for `UnityEditor.EditorGUIUtility.AddCursorRect(UnityEngine.Rect, UnityEditor.MouseCursor)' has some invalid arguments
Assets/Scripts/Mous.cs(11,34): error CS1503: Argument `#1' cannot convert `object' expression to type `UnityEngine.Rect'

Пытался разобраться сам, но не могу понять, что ему не нравится. Грешу на
Синтаксис:
Используется csharp
public Texture2D linc;
но как сделать по другому знаний не хватает(
[curved_hands]
Подскажите пожалуйста.
Заранее спасибо
Последний раз редактировалось Berenold 10 июн 2011, 12:31, всего редактировалось 3 раз(а).
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Проблема с AddcursorRect

Сообщение seaman 10 июн 2011, 12:14

EditorGUIUtility.AddCursorRect(new Rect(10, 10, 100, 100), linc);

В следующий раз посчитайте номер строки в которой он нашел ошибку. И прочитайте что за ошибка. ясно же написано:
AddCursorRect(UnityEngine.Rect, UnityEditor.MouseCursor)' has some invalid arguments
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Проблема с AddcursorRect

Сообщение Berenold 10 июн 2011, 12:22

Спасибо просто скрипт исходник написан был на JS я его на C# переводил. Что оно ругалось на
Синтаксис:
Используется csharp
EditorGUIUtility.AddCursorRect(Rect(10, 10, 100, 100), linc);
это я то понял, а вот что именно ему не так было я не понял. Еще раз спасибо за помощь.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: Проблема с AddcursorRect

Сообщение Berenold 10 июн 2011, 12:30

Как я и думал начал теперь ругаться на
Синтаксис:
Используется csharp
        public Texture2D linc;

ошибка
Assets/Scripts/Mous.cs(11,34): error CS1503: Argument `#2' cannot convert `UnityEngine.Texture2D' expression to type `UnityEditor.MouseCursor'

Переделал на
Синтаксис:
Используется csharp
        public MouseCursor linc;
 
Все нормально.
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: [Решено]Проблема с AddcursorRect

Сообщение Zaicheg 10 июн 2011, 12:39

Berenold писал(а):Мне нужно добавить в игру курсор мышки с определенным курсором вот выдержка из справки

Все нормально.

И что, у вас EditorGUIUtility.AddcursorRect работает в рантайме? :-o
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: [Решено]Проблема с AddcursorRect

Сообщение Berenold 10 июн 2011, 13:07

Zaicheg писал(а):И что, у вас EditorGUIUtility.AddcursorRect работает в рантайме? :-o

Нет)) Но ошибок то не выдает уже))
Вообще мой скрип сейчас выглядит вот так:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Mous : MonoBehaviour
{
        public Texture2D cursor;

        void Start()
        {
                Screen.showCursor = false;
        }
       
        void OnGUI()
        {
                GUI.Label(new Rect(Input.mousePosition.x-15, Screen.height - Input.mousePosition.y-15, 30, 30), cursor);
        }
}

 

Собственно я не в ту сторону просто рыл. Вот понял свою ошибку и нашел решение практически мгновенно))
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт

Re: [Решено]Проблема с AddcursorRect

Сообщение Zaicheg 10 июн 2011, 13:14

Для рантайма нужен Screen.showCursor + GUI.DrawTexture(либо плашка с текстурой или GUITexture).
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: [Решено]Проблема с AddcursorRect

Сообщение Berenold 10 июн 2011, 13:26

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Mous : MonoBehaviour
{
        public Texture2D cursor;

        void Start()
        {
                Screen.showCursor = false;
        }
       
        void OnGUI()
        {
                GUI.Label(new Rect(Input.mousePosition.x-15, Screen.height - Input.mousePosition.y-19, 30, 30), cursor);
        }
}
 


Скрываем курсор, в OnGUI Label-у даем координаты курсора со смещением для отцентровки, на Label вешаем Texture2D. Не знаю правильно ли такая структура, но она у меня вполне работает. Единственное не пойму одного прикола. Сам Label 30х30, соответственно его центр 15х15. А получается, что нифига это не центр. При сдвиге Input.mousePosition.y-19 центер. Почему так понять не могу
Невозможное возможно!
Аватара пользователя
Berenold
UNITрон
 
Сообщения: 151
Зарегистрирован: 31 июл 2010, 01:44
Откуда: Киев
  • Сайт


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

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

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