![](images/chestnut/misc/left.gif) |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
14.07.2015, 14:33
|
#151
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от seaman
Не знаю как эквивалентное выражение Линк работало бы. Но тут же не просто перебор - тут сортировка. Сортировка по идее медленней чем просто перебор массива.
PS: нашел статью по сравнению for foreach и ForEach(из Linq). Что быстрее? foreach vs. List.ForEach vs. for-loop
|
доберусь до скрипта попробую сравнить какой вариант будет быстрее в моем случае, если что результаты выложу для интереса )
|
(Offline)
|
|
16.07.2015, 00:18
|
#152
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
при 100000 вызовах что foreach, что linq выражение даст такой же эффект, зато строк стало поменьше
|
(Offline)
|
|
31.10.2015, 13:49
|
#153
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
подскажите по использованию UI системы. В общем какая проблема возникла:
Меню может появляться/исчезать по щелчку мыши на игровом поле. Управляется это так
UI_Menu.SetActive(true/false);
В игровой логике присутствует проверка на пересечение курсора мыши UI c помощью:
if (EventSystem.current.IsPointerOverGameObject()) {...}
Проблема в том, что если меню не активно (по умолчанию) то проверка пересечения выдает ошибку, т.к. объект не присутствует в сцене. Но при принудительном отображении меню проверка работает. Если меню снова скрыть - снова ошибки. В чем может быть беда и как исхитриться избежать таких ситуаций.
Планируемый алгоритм:
- Меню появляется при щелчке мыши по игровому объекту
- Меню пропадает при щелчке мыши по игровому полю
- Когда меню активно в логике кода должна происходить проверка на пересечение курсора мыши области UI.
Где копать?
|
(Offline)
|
|
31.10.2015, 14:46
|
#154
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
А если так?
if (EventSystem.current && EventSystem.current.IsPointerOverGameObject()) {...}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.01.2016, 00:00
|
#155
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Подскажите, в новой системе UI каким образом можно снять выделение "Highlighted" с кнопки с помощью кода? Не могу найти какое свойство за это отвечает...
|
(Offline)
|
|
20.01.2016, 00:19
|
#156
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от EvilOkta
Подскажите, в новой системе UI каким образом можно снять выделение "Highlighted" с кнопки с помощью кода? Не могу найти какое свойство за это отвечает...
|
Или полностью снять переходы:
GetComponent<Button>().transition = Selectable.Transition.None;
Или руками настроить цвет для хайлаита:
Создать ColorBlock. Настроить у него highlightedColor и присвоить его к button.colors.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.10.2019, 20:20
|
#157
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Возник вопрос, для понимания ситуации.
Есть субклассы, наследуемые от базового класса. Если создан экземпляр одного субкласса, может он каким-то образом превратиться в экземпляр другого субкласса? Паттерн состояние - это то?
Мне пока на ум пришло только уничтожение экземпляра субкласса и создание нового другого субкласса с переносом необходимых данных - так вообще делают или это плохая практика?
|
(Offline)
|
|
24.10.2019, 21:06
|
#158
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от EvilOkta
Возник вопрос, для понимания ситуации.
Есть субклассы, наследуемые от базового класса. Если создан экземпляр одного субкласса, может он каким-то образом превратиться в экземпляр другого субкласса? Паттерн состояние - это то?
Мне пока на ум пришло только уничтожение экземпляра субкласса и создание нового другого субкласса с переносом необходимых данных - так вообще делают или это плохая практика?
|
Нельзя. Если у тебя есть 'треугольник' и 'квадрат' которые оба наследуются от 'фигуры', то сомневаюсь, что можно превратить одно в другое.
Паттерн состояние не превращает один класс в другой.
Данные можно перетащить из треугольника в квадрат через reflection в рамках родительского класса (фигуры).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.10.2019, 21:19
|
#159
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Ясно, спасибо! А как тогда лучше всего проектировать? Про треугольники и квадраты аналогия понятна.
Допустим базовый класс "работник"; субклассы "электрик", "менеджер", "ремонтник". Экземпляр класса "электрик" сменил работу и стал "менеджер" и должен теперь реализовывать другой набор функций.
Upcasting и Downcasting тоже не помогут?
|
(Offline)
|
|
25.10.2019, 00:23
|
#160
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от EvilOkta
Ясно, спасибо! А как тогда лучше всего проектировать? Про треугольники и квадраты аналогия понятна.
Допустим базовый класс "работник"; субклассы "электрик", "менеджер", "ремонтник". Экземпляр класса "электрик" сменил работу и стал "менеджер" и должен теперь реализовывать другой набор функций.
Upcasting и Downcasting тоже не помогут?
|
Имхо, паттерн стратегия. Работа как интерфейс, конкретные профессии - его реализации. Работник ссылается на стратегию(его текущую работу). При смене профессии, меняем стратегию.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Антихрист за это полезное сообщение:
|
|
30.10.2019, 13:28
|
#161
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Еще вопрос. Как вести документацию по составу класса? Для описания методов есть XML комментарии - это понятно, но интересует другое. Когда кол-во классов становится большим становится сложно в голове удерживать какие методы они реализуют, интерфейсы наследуют и какими свойствами обладают.
Может есть какие-то инструменты для создания базы данных о классах, их взаимодействии и структуре? Интересно для общего развития.
Или все банально сводится к тому, что в коде открываешь сам класс и вспоминаешь?)
|
(Offline)
|
|
02.11.2019, 12:34
|
#162
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
В VS (не Community) есть средство создания диаграмм классов
![Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 763
Размер: 369.7 Кб
ID: 23060](https://forum.boolean.name/attachment.php?s=fd6be676b0dbad4710ec46dfbbc17bef&attachmentid=23060&thumb=1&d=1572683539)
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо seaman за это полезное сообщение:
|
|
03.11.2019, 11:53
|
#163
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от seaman
В VS (не Community) есть средство создания диаграмм классов
Вложение 23060
|
Ух какой ужас, моя не смотри.
2EvilOkta: Лучше называть классы именами, описывающими функции, которые они выполняют. И организовывать в пространства имен/папки по тому же принципу. Ничего вспоминать не потребуется, все будет понятно по наименованию классов. Много ли вы диаграмм видели в справке по .net? Я часто так же использую ключевое слово partial, чтобы разделить класс на несколько частей, если часть функций можно объединить в группы. Тогда в структуре проекта это представлено несколькими файлами, имена которых так же отвечают на вопрос, что там внутри (например LevelEditor.cs и LevelEditor.LoadSave.cs).
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
03.11.2019, 12:35
|
#164
|
Знающий
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений (для 229 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Спасибо ) энтерпрайз дорого (я ж не зарабатываю программированием), идея с partial интересная. Параллельно в Excel заношу публичные методы классов и их сигнатуры, на всякий случай.
Продолжаю закидывать страшными вопросами. Я наконец-то разобрался со свойствами (pax за это отдельное спасибо), но терзают сомнения, можно ли их применять вот так:
protected static string[] Mounthes = new[] { "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря" }; protected string _mounth; protected byte Mounth // храним номер месяца, выдаем его string из массива по номеру элемента { get { byte count = 1; while (count <= Mounthes.Length) { if (Mounthes[count-1] == _mounth) break; count++; } return count; } set { _mounth = Mounthes[value-1]; } }
Условно закидываем номер месяца, а получаем его string название. Или это плохая практика?
|
(Offline)
|
|
03.11.2019, 14:25
|
#165
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений (для 412 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от EvilOkta
Спасибо ) энтерпрайз дорого (я ж не зарабатываю программированием), идея с partial интересная. Параллельно в Excel заношу публичные методы классов и их сигнатуры, на всякий случай.
Продолжаю закидывать страшными вопросами. Я наконец-то разобрался со свойствами (pax за это отдельное спасибо), но терзают сомнения, можно ли их применять вот так:
protected static string[] Mounthes = new[] { "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря" }; protected string _mounth; protected byte Mounth // храним номер месяца, выдаем его string из массива по номеру элемента { get { byte count = 1; while (count <= Mounthes.Length) { if (Mounthes[count-1] == _mounth) break; count++; } return count; } set { _mounth = Mounthes[value-1]; } }
Условно закидываем номер месяца, а получаем его string название. Или это плохая практика?
|
Конкретно к этому примеру - выглядит не очень. В первую очередь за счет цикла с сравнением строк внутри гетера. Добавь одну переменную и закэшируй туда индекс.
protected static readonly string[] Monthes = { "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря" }; protected byte monthIndex; protected string monthName; protected byte MonthIndex { get => monthIndex; set { if (value <= 0 || value > 12) return; monthIndex = (byte) (value - 1); monthName = Monthes[monthIndex]; } } protected string MonthName => monthName;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:49.
|