Задать вопрос
Программист, дизайнер игр, сценарист и ментор.
Контакты
Местоположение
Украина, Киевская обл., Киев

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (38)

Лучшие ответы пользователя

Все ответы (251)
  • Как проверить тип данных в Java через if?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Тип переменной проверяют через instanceof

    Object r = 13.1;
    if (r instanceof Double) {
        System.out.println("matches double");
    }


    Распознать же строку как double можно, например, с помощью регулярки

    String example = "1331.2";
    if (Pattern.matches("^[\\+\\-]{0,1}[0-9]+[\\.\\,][0-9]+$", (CharSequence) example)) {
        System.out.println("matches double");
    }


    Можно найти какую-нибудь библиотеку, можно самому написать метод, посимвольно перебирающий строку. А можно просто воспользоваться Double.parseDouble(), не такой уж он и громоздкий.
    Ответ написан
    4 комментария
  • Как переместить курсор мыши по середине экрана?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Задачу можно решить минимум тремя способами. Какой способ использовать - выбирайте сами.

    Способ 1
    В классе Cursor наличествует свойство lockState, определяющее поведение и видимость курсора. Сохранив в него значение CursorLockMode.Locked, вы переместите курсор в центр ОКНА ИГРЫ и скроете. Затем туда нужно сохранить значение Cursor.lockState = CursorLockMode.None, что разблокирует курсор и сделает видимым. Есть только одна проблема - эта операция работает не мгновенно, потому применить их последовательно не получится. Выглядеть код будет как-то так

    using UnityEngine;
    
    public class MouseCenteringExample : MonoBehaviour {
    
    	private void Start() {
    		Cursor.lockState = CursorLockMode.Locked;
    		Invoke("UnlockCursor", 0.05f);
    	}
    
    	private void UnlockCursor() => Cursor.lockState = CursorLockMode.None;	
    
    }


    Способ 2
    Если вы используете New Input System, то вам доступна опция InputState.Change, которую, в контексте вашей задачи, можно использовать так:

    using UnityEngine;
    
    public class MouseCenteringExample : MonoBehaviour {
    
    	private void Start() {
    		var center = Screen.safeArea.center;
    		Mouse.current.WarpCursorPosition(center);
    		InputState.Change(Mouse.current.position, center);
    	}
    
    }


    Способ 3
    Можно воспользоваться поддержкой нативных библиотек ОС. Правда, тут придётся подключить платформозависимую компиляцию. Например, для Windows:

    using System.Runtime.InteropServices;
    using UnityEngine;
    
    public class MouseCenteringExample : MonoBehaviour {
    
    #if UNITY_STANDALONE_WIN
    
    	[DllImport("user32.dll")]
    	static extern bool SetCursorPos(int X, int Y);
    
    	private void Start() {
    		var center = Screen.safeArea.center;
    		SetCursorPos((int)center.x, (int)center.y);
    	}
    
    #endif
    
    }
    Ответ написан
    2 комментария
  • Что делать если кнопки перестали работать на юнити 2д?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Сначала нужно определиться - кнопки именно что не работают или просто не нажимаются.
    На ум приходит 5 сценариев:
    1) Что-то мешает.
    Иерархия интерфейса устроена таким образом, что чем выше в иерархии объект, тем раньше он рисуется. Возможно ниже по иерархии есть иной графический элемент (даже если он в этом месте прозрачен, главное чтобы был включен), который перехватывает нажатие на себя. Нужно либо поменять иерархию, либо отключить галочку Raycast Target на всех объектах, которые мешают нажатию (ну или просто подвигать)
    2) Кнопка в принципе выключена.
    Проверьте, включено ли свойство Interactable кнопки
    3) Возможно сама кнопка не слушает нажатия.
    Проверьте на всякий случай, рядом с кнопкой на том же объекте должен лежать текст или картинка и там галочка Raycast Target должна быть включена.
    4) На сцене нет Event System
    Эта штука находится в меню создания UI / Event System
    5) Сам канвас не слушает нажатия - проверьте чтобы на канвасе был включенный компонент "Graphic Raycaster"

    Но может быть и так, что событие у самой кнопки просто не настроено (On Click)
    Ответ написан
    3 комментария
  • Хочу купить ассет, но пугает вот это. Кто сталкивался с этим?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Это нормально. Существование необходимости в таких документах вовсе не значит, что где-то сидит злой майор, смотрит чужие транзакции в поисках тех, кто укажет недостоверные данные или ошибётся в заполнении формы. Просто таково законодательство нашего времени, не разрешающее проводить платежи вслепую.
    Основная цель сбора подобных данных заключается в трёх вещах: работа с налоговой, гарантия возможности возврата товаров для вас как пользователя и гарантия для сервиса на случай урегулирования споров. Даже не столько гарантия, сколько облегчение их работы во всех случаях, если что-то идёт не так.

    Вы вольны писать туда что угодно, но по опыту скажу, что лучше там не врать. Вопрос не в наказании, а в сложностях, если вы захотите получить выгоду, например, что-то продавать, то потом бывает муторно там что-то исправлять.
    Ответ написан
    Комментировать
  • Как узнать минимальные требования для собственной игры?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Действительно лучший способ определить спецификации - эмпирический на большой выборке разных устройств. Коими, конечно же, одиночные разработчики не обладают. Но это не значит, что сделать тут ничего нельзя.

    Вы можете начать со сравнительного анализа. Из предложенных мной способов он самый простой и быстрый. Достаточно отыскать несколько похожих на вашу игр и провести некое винзоризованное среднее значение критического минимума и оптимального максимума. Не обязательно искать именно те игры, что написаны на Unity, но будет больше похоже на правду, если авторами игр будут небольшие студии, или независимые разработчики.

    Если вы захотите уточнить вашу гипотезу, можете продолжить ручной проверкой.

    1. Место на диске
    Просто посмотрите, сколько весит папка с собранной игрой.

    2. Количество ОЗУ
    Оценить максимум вы можете прямо в диспетчере задач, только проводите оценку не посреди главного меню, а в процессе максимума интенсивности игрового процесса. Также можете создать несколько виртуальных машин на вашем компьютере с разной конфигурацией и по очереди прогнать по ним игру.

    3. Видеокарта
    Оценить характеристики видео вы можете по загруженности игрой активными объектами и средствами, влияющими на отрисовку - шейдерам, освещению (трассировке лучей, отражениям и т.д.), постпроцессингу и т.д.. Тут зависимость простая - чем больше эффектов, тем круче видеокарта нужна, чтобы каждое обновление экрана всё это дело перерисовывать. Также почитайте про шейдерные модели. Например, та же 4 версия HLSL требует минимум DirectX 10 версии. Также грубо оценить видеокарту вы можете по тому же диспетчеру задач, сравнив значение столбца GPU во время интенсивной игры со значением мощности видеокарты.

    4. Процессор
    Оценка процессора самая сложная, т.к. в неё постоянно вмешиваются другие процессы. В том же диспетчере задач вы можете посмотреть, как сейчас ведёт себя процессор, плюс можете попробовать занизить его тактовую частоту или выделить игре больше/меньше ядер, чтобы посмотреть как она себя поведёт.

    5. Прочее - интернет, звук и т.д.
    Если ваша игра требует подключение к интернету, просто напишите "интернет". Если же она содержит механику потокового просмотра видео или стриминг, то также укажите скорость, которую можно замерить любой соответствующей утилитой. Если вы делаете игру для аудиофилов, укажите HiRes Audio. Если нужен контроллер - укажите какой. В остальном требования из разряда "это нужно или нет", а не "что конкретно нужно".

    Ну и, напоследок, отзывы.
    Люди так устроены, что никогда не начнут писать положительный отзыв, если не почувствуют в этом необходимость, а вот поругать игру выстраиваются целые виртуальные очереди. Вы всегда можете из негативных отзывов узнать, если с игрой что-то критически не так.

    Как видите, данный процесс весьма трудоёмкий, а местами требующий специфических знаний. Потому порой проще воспользоваться услугами тестировщиков, или заглянуть на реддит. Например, в r/playmygame или в r/playtesters.
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (91)