Местоположение
Украина, Киевская обл., Киев

Достижения

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

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

Все теги (26)

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

Все ответы (69)
  • Как переместить курсор мыши по середине экрана?

    @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 комментария
  • Как проверить тип данных в 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 комментария
  • Как создать сенсорную кнопку Escape в Юнити?

    @Ezekiel4
    Охотник на пиратов
    Вынесите реализацию паузы в отдельный public метод. Затем откройте свой UI Button и прокрутите в инспекторе вниз, пока не увидите поле On Click, чуть ниже будет кнопка +, жмите. Появится такая схема:
    625d3da8287f0344210173.png
    В левое нижнее поле перетащите объект, на котором висит скрипт с паузой. Затем в выпадающем списке справа сверху выберите свой класс и метод паузы.

    Вы просили код, выглядеть это будет так. До:
    private void Update() {
    	if (Input.GetKeyDown(KeyCode.Escape)) {
    		// your code
    	}
    }

    После:
    private void Update() {
    	if (Input.GetKeyDown(KeyCode.Escape))
    		OnPauseStart();
    }
    
    public void OnPauseStart() {
    	// your code
    }


    PS. Если хотите, можете попробовать повесить функцию на кнопку back
    private void Update() {
        if (Application.platform == RuntimePlatform.Android) {
            if (Input.GetKeyDown(KeyCode.Escape)) {
    			// your code
            }
        }
    }
    Ответ написан
    1 комментарий
  • Unity 2d. У меня возникает следующая проблема. Можете, пожалуйста, объяснить, что не так?

    @Ezekiel4
    Охотник на пиратов
    Кратко: у вас дубликат класса, переименуйте этот или найдите другой класс с таким же именем.

    Детально: есть такая штука, namespace. Грубо говоря, это каталог всех классов, которые к нему принадлежат. Вы namespace явно не задаёте, поэтому этот (а возможно и другие) класс лежат в так называемом global namespace. Чтобы всё правильно работало, в рамках одного пространства имён каждый класс должен иметь уникальное название. Ошибка говорит о том, что у вас уже есть такой класс.
    Если для вас принципиально важно иметь два класса с одинаковым названием, один из их переместите в другое пространство имён:

    public namespace MyNamespace {
    
        public class MyClass {
            //code
        }
    }


    Чтобы потом этот класс использовать в другом коде, укажите директиву:

    using MyNamespace;
    Ответ написан
    1 комментарий
  • Какие вы можете выделить важные темы в изучении Java?

    @Ezekiel4
    Охотник на пиратов
    Всё зависит от того, что вы хотите. Java на компе, в андроиде и на сервере - это не совсем одно и то же.

    По-умолчанию достаточно освоить
    * основы (java core) + collections + алгоритмы
    * принципы ООП, DRY, KISS, YAGNI, SOLID, Clean code
    * работа с форматами xml и json
    * базы данных
    * юнит тесты
    * логгирование
    * git
    * maven или grandle

    Дальше зависит от направления. К моменту, когда вы освоите пункты выше, вы уже лучше будете понимать куда хотите пойти. Тогда просто зайдите на любой сайт поиска работы и посмотрите какие ещё технологии требуются в вакансиях по вашему направлению.
    Ответ написан
    Комментировать

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

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