Задать вопрос
  • Как отследить выход из игры UNITY?

    Столкнулся я с вопросом "А как узнать, что игрок закрыл игру принудительно, не используя кнопку "Exit"?

    Ну например ты можешь при нормальном закрытии записывать какой-нибудь флаг в файл, типа "игра была закрыта нормально".
    Тогда при следующем запуске, обнаружив, что этот флаг не стоит - ты поймёшь, что в прошлый раз игра закрылась непредвиденным образом (принудительно или из-за отключения электричества)

    Также, было бы весело решить данный вопрос, если вы ответите на похожий вопрос "Как узнать время проведенное в афк?",

    Ну тут тебе сначала нужно дать определение, что такое афк в твоём случае :)
    К примеру, можно считать, что игрок отошёл, если от него не поступает сигнал N единиц времени.
    Тогда чтобы узнать время нахождения в афк - тебе нужно просто сохранять метку времени каждый раз, когда игрок как-то взаимодействует с игрой, а потом отнимать от последнего записанного времени N.
    Ответ написан
    2 комментария
  • Как получить понимание разработки игры?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Тебе же прямо сказали. Нужно изучить язык программирования.
    Не на уровне "почитал книжку". Не на уровне интерн/джуниор. А на уровне уверенного разработчика.

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

    Поэтому правильный путь - это потратить МНОГО времени и МНОГО усилий.
    Ты же сам сказал, что все что ты изучил - там давали базовое понимание что это такое.

    Поэтому вместо того, чтобы делать крутую 3д игру, сперва начни делать приложения попроще.
    Добейся, чтобы у тебя просто двигался персонаж. Потом сделать лабиринт, чтобы со стенками взаимодействовал. Потом может быть попробуй добавить прыжок и высоту. И так потихоньку сделаешь основу для игры. Потом будешь добавлять и добавлять. Может через года два будет демо-версия с одним рабочим уровнем.
    Ответ написан
    Комментировать
  • Как получить понимание разработки игры?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Из сбивчивых жалоб и стенаний автора можно только то что нет опыта и есть признаки выгорания от учёбы. У меня тоже такое было. Я выгорал. И самое лучшее в этот момент - бросить самообучение и заняться другим делом за которое платят и которое вполне осязаемо. Самая большая беда новичка - это амбиции. Это желание сразу сходу делать своё где есть все фичи в мире и можно грабить корованы и прочее. Это ошибка. Ошибка которая как раз приводит к выгоранию. Лучше написать морской бой в браузере который работает чем писать 3д шутер 10 лет и потом выкинуть его на свалку просто потому что он морально устарел. Одиночки вообще никакой игры не могут написать. Игра сегодня - это как съемки сериала. Требует слишком много разных знаний из разных областей и 1 чел никогда все не охватит.

    По поводу мотивации и геймдева. Лучше всего наверное влиться в команду которая уже делает игры. Влиться самым младшим подмастерьем и хотя-бы пол-годика поработать и понаблюдать как идет процесс разработки. Да. Надо будет приглушить амбиции. Но ничего не поделать. Я думаю что это единственный верный путь где не будет выгорания. Эмоциональный контакт с командой очень важен.
    Ответ написан
    Комментировать
  • Как получить понимание разработки игры?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Рекомендую пройти несколько (минимум два-три) туториала создания простой игры, где показывают большинство хотя бы основных частей - создание сцены, персонажи, перемещение, управление персонажем. Повторите всё так же, как у них рассказано, а не придумывать своё - для этого будет время, когда основные вопросы исчезнут.
    Ответ написан
    Комментировать
  • Как решить эту ошибку в Unity: error CS0246: The type or namespace name 'Game' could not be found (are you missing a using directive or an as?

    GavriKos
    @GavriKos Куратор тега Unity
    А класс Game в проекте существует? Если да - то возможно нехватает using
    Ответ написан
    1 комментарий
  • Как переместить курсор мыши по середине экрана?

    @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 комментария
  • Ошибка при управлении миксером через скрипт. Как решить?

    vesper-bot
    @vesper-bot
    Любитель файрволлов
    У вас имя класса совпадает с существующим, из-за этого переменная am имеет тип вашего AudioMixer вместо системного. На это и ругань.
    Ответ написан
    1 комментарий
  • Как сделать управление в Unity персонажем (ошибка в коде)?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Добрый вечер. Замените

    Player.transform.position += Player.transform.forward * speed * Time.deltaTime;

    На
    transform.position += transform.forward * speed * Time.deltaTime;

    И поменяйте значение скорости, хотя бы на

    public float speed = 50;
    Ответ написан
    2 комментария