Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 14.07.2015, 14:33   #151
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Сообщение от seaman Посмотреть сообщение
Не знаю как эквивалентное выражение Линк работало бы. Но тут же не просто перебор - тут сортировка. Сортировка по идее медленней чем просто перебор массива.
PS: нашел статью по сравнению for foreach и ForEach(из Linq). Что быстрее? foreach vs. List.ForEach vs. for-loop
доберусь до скрипта попробую сравнить какой вариант будет быстрее в моем случае, если что результаты выложу для интереса )
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 16.07.2015, 00:18   #152
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

при 100000 вызовах что foreach, что linq выражение даст такой же эффект, зато строк стало поменьше
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 31.10.2015, 13:49   #153
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

подскажите по использованию UI системы. В общем какая проблема возникла:
Меню может появляться/исчезать по щелчку мыши на игровом поле. Управляется это так
UI_Menu.SetActive(true/false); 
В игровой логике присутствует проверка на пересечение курсора мыши UI c помощью:
if (EventSystem.current.IsPointerOverGameObject()) {...} 
Проблема в том, что если меню не активно (по умолчанию) то проверка пересечения выдает ошибку, т.к. объект не присутствует в сцене. Но при принудительном отображении меню проверка работает. Если меню снова скрыть - снова ошибки. В чем может быть беда и как исхитриться избежать таких ситуаций.

Планируемый алгоритм:
- Меню появляется при щелчке мыши по игровому объекту
- Меню пропадает при щелчке мыши по игровому полю
- Когда меню активно в логике кода должна происходить проверка на пересечение курсора мыши области UI.

Где копать?
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 31.10.2015, 14:46   #154
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проблемы разработки от EvilOkta

А если так?
if (EventSystem.current && EventSystem.current.IsPointerOverGameObject()) {...} 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (01.11.2015)
Старый 20.01.2016, 00:00   #155
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Подскажите, в новой системе UI каким образом можно снять выделение "Highlighted" с кнопки с помощью кода? Не могу найти какое свойство за это отвечает...
__________________
Области Хаоса - мой новый Youtube проект
(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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (20.01.2016)
Старый 24.10.2019, 20:20   #157
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Возник вопрос, для понимания ситуации.
Есть субклассы, наследуемые от базового класса. Если создан экземпляр одного субкласса, может он каким-то образом превратиться в экземпляр другого субкласса? Паттерн состояние - это то?
Мне пока на ум пришло только уничтожение экземпляра субкласса и создание нового другого субкласса с переносом необходимых данных - так вообще делают или это плохая практика?
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 24.10.2019, 21:06   #158
Антихрист
Разработчик
 
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений
(для 412 пользователей)
Ответ: Проблемы разработки от EvilOkta

Сообщение от EvilOkta Посмотреть сообщение
Возник вопрос, для понимания ситуации.
Есть субклассы, наследуемые от базового класса. Если создан экземпляр одного субкласса, может он каким-то образом превратиться в экземпляр другого субкласса? Паттерн состояние - это то?
Мне пока на ум пришло только уничтожение экземпляра субкласса и создание нового другого субкласса с переносом необходимых данных - так вообще делают или это плохая практика?
Нельзя. Если у тебя есть 'треугольник' и 'квадрат' которые оба наследуются от 'фигуры', то сомневаюсь, что можно превратить одно в другое.
Паттерн состояние не превращает один класс в другой.
Данные можно перетащить из треугольника в квадрат через reflection в рамках родительского класса (фигуры).
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (24.10.2019)
Старый 24.10.2019, 21:19   #159
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Ясно, спасибо! А как тогда лучше всего проектировать? Про треугольники и квадраты аналогия понятна.
Допустим базовый класс "работник"; субклассы "электрик", "менеджер", "ремонтник". Экземпляр класса "электрик" сменил работу и стал "менеджер" и должен теперь реализовывать другой набор функций.
Upcasting и Downcasting тоже не помогут?
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 25.10.2019, 00:23   #160
Антихрист
Разработчик
 
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений
(для 412 пользователей)
Ответ: Проблемы разработки от EvilOkta

Сообщение от EvilOkta Посмотреть сообщение
Ясно, спасибо! А как тогда лучше всего проектировать? Про треугольники и квадраты аналогия понятна.
Допустим базовый класс "работник"; субклассы "электрик", "менеджер", "ремонтник". Экземпляр класса "электрик" сменил работу и стал "менеджер" и должен теперь реализовывать другой набор функций.
Upcasting и Downcasting тоже не помогут?
Имхо, паттерн стратегия. Работа как интерфейс, конкретные профессии - его реализации. Работник ссылается на стратегию(его текущую работу). При смене профессии, меняем стратегию.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Антихрист за это полезное сообщение:
EvilOkta (25.10.2019), St_AnGer (25.10.2019)
Старый 30.10.2019, 13:28   #161
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Еще вопрос. Как вести документацию по составу класса? Для описания методов есть XML комментарии - это понятно, но интересует другое. Когда кол-во классов становится большим становится сложно в голове удерживать какие методы они реализуют, интерфейсы наследуют и какими свойствами обладают.
Может есть какие-то инструменты для создания базы данных о классах, их взаимодействии и структуре? Интересно для общего развития.
Или все банально сводится к тому, что в коде открываешь сам класс и вспоминаешь?)
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 02.11.2019, 12:34   #162
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Проблемы разработки от EvilOkta

В VS (не Community) есть средство создания диаграмм классов
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 750
Размер:	369.7 Кб
ID:	23060
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо seaman за это полезное сообщение:
EvilOkta (02.11.2019), pax (03.11.2019)
Старый 03.11.2019, 11:53   #163
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проблемы разработки от EvilOkta

Сообщение от seaman Посмотреть сообщение
В VS (не Community) есть средство создания диаграмм классов
Вложение 23060
Ух какой ужас, моя не смотри.

2EvilOkta: Лучше называть классы именами, описывающими функции, которые они выполняют. И организовывать в пространства имен/папки по тому же принципу. Ничего вспоминать не потребуется, все будет понятно по наименованию классов. Много ли вы диаграмм видели в справке по .net? Я часто так же использую ключевое слово partial, чтобы разделить класс на несколько частей, если часть функций можно объединить в группы. Тогда в структуре проекта это представлено несколькими файлами, имена которых так же отвечают на вопрос, что там внутри (например LevelEditor.cs и LevelEditor.LoadSave.cs).
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
EvilOkta (03.11.2019), St_AnGer (03.11.2019)
Старый 03.11.2019, 12:35   #164
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 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 название. Или это плохая практика?
__________________
Области Хаоса - мой новый Youtube проект
(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 <= || value 12) return;
                
monthIndex = (byte) (value 1);
                
monthName Monthes[monthIndex];
            }
        }

        protected 
string MonthName => monthName
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (03.11.2019)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:16.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com