[РЕШЕНО] GUI: Ambiguous reference 'Button' - что не так?

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

[РЕШЕНО] GUI: Ambiguous reference 'Button' - что не так?

Сообщение Savalin 25 ноя 2011, 12:08

Привет всем!
Делаю в GUI такую фичу - человек начинает вводить некую строку в поле поиска, и по мере ввода ему предлагаются во всплывающем боксе варианты, похожие на его еще не сформулированный полностью запрос. В общем, как в Google =)

При попытке вывести кнопки с найденными вариантами в консоль выводится ошибка:
Ambiguous reference 'Button': UnityEngine.GUI.Button(UnityEngine.Rect, UnityEngine.GUIContent), UnityEngine.GUI.Button(UnityEngine.Rect, UnityEngine.Texture), UnityEngine.GUI.Button(UnityEngine.Rect, String).


Где я лажанулся? Гуглил - ничего толкового не нашел..

Ниже кусок кода. Строка, на которую ссылается сообщение в консоли, находится в самом конце
Синтаксис:
Используется javascript
function OnGUI(){
        //--------- <TEXT ROW> ------------
        searchText = GUI.TextField (searchBox, searchText, searchMaxLength);
        //если поле содержит текст и если тескт поменялся
        if (searchText != "" && lastSearchText != searchText){
                //ShowSearchTips();
                lastSearchText = searchText;

                //делаем запрос к базе
                //разбираем ответ

                //FIXME! Заглушка. Данные кагбе получены и спарсены =)
                searchTipsArr = new Array("Ацкая Приправа", "Блек Джек", "Супер Бонус");
                       
                //показываем бокс подсказки
                GUI.Box(searchPopupBox, "");

                //формируем кнопки подсказок
                var heightTmp:float = 0.0;
                for ( var id:int=0; id<searchTipsArr.length; id++ )
                {
                        heightTmp += searchPopupRowHeight;
                        //Вот на эту строку компилятор ругается
                        GUI.Button(Rect(searchPopupBox.left, searchPopupBox.top-heightTmp, searchPopupBox.width, searchPopupRowHeight), searchTipsArr[id]);
                       
                }

                //[--croped--]
       
        }

}
 


Если где-то совсем очевидный косяк, пожалуйста, дайте ссылочку где я могу набраться ума на этот счет
Последний раз редактировалось Savalin 25 ноя 2011, 13:42, всего редактировалось 1 раз.
Savalin
UNец
 
Сообщения: 35
Зарегистрирован: 07 окт 2011, 11:00

Re: GUI: Ambiguous reference 'Button' - что не так?

Сообщение IDoNotExist 25 ноя 2011, 12:56

Вот вам самый главный минус использования JavaScript, динамические типы с неявным определением распоясывают программеров.
Ambiguous reference - значит двусмысленное определение функции, значит какойто из параметров которые вы передаете в GUI.Button(), не определен явно и поэтому компилер не может решить какую из перегруженных функций использовать. Попробуйте явно определить массив searchTipsArr:string, (или как там на JS массивы объявляются) должно помочь.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: GUI: Ambiguous reference 'Button' - что не так?

Сообщение Savalin 25 ноя 2011, 13:37

Объявил этот массив вот так:
Синтаксис:
Используется javascript
private var searchTipsArr  = new System.Collections.Generic.List.<String>();

это решило проблему.

А насчет неявного объявления переменных - я использую #pragma strict и объявляю все типы заранее. Тут скорее дело в особенностях работы Unity с массивами Array() (у меня почему-то даже легальные, описанные в документации, методы типа push и unshift не работают конкретно здесь - в других скриптах отрабатывают как надо, а здесь ругается и непонятно почему)

IDoNotExist, благодарю за помощь!
Savalin
UNец
 
Сообщения: 35
Зарегистрирован: 07 окт 2011, 11:00


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

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

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