Быстрый старт · Документация · Отчёт об ошибке
Этот пакет позволяет использовать нативные поля ввода на Android и iOS. Он работает в паре с компонентом TMP InputField и использует некоторые его настройки.
Текущая реализация мобильного поля ввода в Unity не позволяет полноценно использовать все возможности, такие как выделение, копирование, вставка, ввод эмоджи и другие встроенные функции. И никто пока не имеет представления когда это будет реализовано и будет ли вообще.
Этот плагин создаёт нативные поля ввода поверх UI канваса со всеми функциями платформы. Т.к. это хак и поля ввода расположены поверх всего UI, вам необходимо самостоятельно контролировать их видимость и позицию. Для этого в плагине есть несколько полезных функций.
- нативное поле ввода и клавиатура для iOS и Android
- настройка типа кнопки:
Стандартная,Далее,Готово,Поиск,Отправить - настройка обработки кнопки
- настройка кнопкок
ГотовоиОчистить(iOS) - изменение опций поля ввода во время выполнения
- скрытие дополнительного поля ввода (Android)
- отслеживание появления и скрытия клавиатуры (с высотой)
- отслеживание ориентации экрана
- установка языка клавиатуры для поля ввода
- поддержка пользовательских шрифтов
Скачайте пакет со страницы релизов или добавьте строчку ниже в ваш файл Packages/manifest.json и пакет будет установлен по адресу Git репозитория:
"com.mopsicus.umi": "https://github.com/mopsicus/umi.git",Посмотрите пример использования в демо. Этот пример покажет как инициализировать и использовать UMI в вашем приложении, как создать экран по типу мессенджера и как использовать свои шрифты.
Протестировано в Unity 2020.3.x, Android (API >= 24) и iOS.
Перед созданием первого нативного поля ввода, необходимо проинициализировать UMI. На сцене будет создан специальный объект с контроллером для связи с нативными плагинами.
Для этого, добавьте UMI в секцию uses и вызовете инициализацию, например, в методе Awake в стартовой точке вашего приложения.
using UnityEngine;
using UMI;
public class Bootstrap : MonoBehaviour {
void Awake() {
MobileInput.Init();
}
}Note
Убедитесь что вы сделали это до создания и появления всех полей ввода, иначе UMI выдаст ошибку.
Important
UMI не будет работать с включенной опцией Render Over Native UI.
Для начала использования UMI в вашем проекте, добавьте скрипт MobileInputField на объект с полем ввода TMP Input field.
В инспекторе вы можете редактировать некоторые опции которые будут применены к нативному полю ввода:
- цвет текста
- цвет текста подсказки
- цвет курсора/каретки
- цвет выделения текста (Android)
- текст подсказки
- лимит символов
- размер шрифта
- положение текста
- тип поля ввода
- тип клавиатуры
- многострочность
UMI также позволяет дополнительно настраивать:
- цвет фона
- тип кнопки
- обработку кнопки
- свой шрифт
- язык клавиатуры при инициализации
- управление скрытием клавиатуры
- кнопки "Готово" и "Очистить"
Если вам нужно отслеживать появление или скрытие клавиатуры, то необходимо подписаться на событие и добавить обработчик в ваш код.
using UnityEngine;
using UMI;
public class Bootstrap : MonoBehaviour {
void Awake() {
MobileInput.Init();
MobileInput.OnKeyboardAction += OnKeyboardAction;
MobileInput.OnOrientationChange += OnOrientationChange;
}
void OnOrientationChange(HardwareOrientation orientation) {
// вызывается когда меняется ориентация экрана
}
void OnKeyboardAction(bool isShow, int height) {
// вызывается когда клавиатура появляется или скрывается, или когда изменяется её высота
}
}При использовании события OnKeyboardAction вы можете контролировать UI элементы, например, сдвигать вверх поле ввода как мессенджерах. Смотрите демо.
SetTextColor– изменение цвета текстаSetPlaceholderColor– изменение цвета текста подсказкиSetBackgroundColor– изменение цвета фонаSetContentType– изменение типа поля вводаSetReadonly– изменение состояния "только для чтения"SetLanguage– изменение языка клавиатурыSetCaret– установка позиции курсора
- Скопируйте TTF шрифты в папку
StreamingAssets - Измените название шрифта в инспекторе вместо
default - Пользуйтесь
При первой инициализации UMI скопирует шрифты в специальную пользовательскую папку приложения. Если вы меняете шрифт(ы) при обновлении, то вам необходимо вызвать метод MobileInput.UpdateFonts() чтобы обновить шрифты в этой папке.
iOS часть плагина достаточна проста, содержит всего 3 файла: сам плагин и два файла для связи с Unity приложением. Если вы хотите узнать как это всё работает – смотрите файл MobileInput.mm в папке Plugins этого пакета и читайте документацию.
Android часть – это скомпилированная AAR библиотека. Все исходные коды доступны в папке Android~. Вы можете изменить эту часть как вам необходимо и перекомпилировать.
Убедитесь что ваш AndroidManifest.xml содержит следующую настройку:
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name" android:windowSoftInputMode="adjustNothing">
...
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
...
</activity>Опция adjustNothing добавлена для предотвращения смещения экрана вверх при появлении клавиатуры.
Unity часть содержит интерфейс для вызова нативных методов у полей ввода, а также скрипт для редактора, для настройки дополнительных параметров в инспекторе.
При инициализации, плагин создаёт неразрушаемый объект с контроллером для отправки и получения команд из нативной части. При использовании скрипта MobileInputField, плагин автоматически регистрирует его и создаёт нативное поле.
Данные между Unity приложением и нативными плагинами передаются в JSON формате. UMI использует библиотеку NiceJson с некоторыми модификациями.
Мы приглашаем вас внести свой вклад и помочь улучшить UMI. Пожалуйста, ознакомьтесь с документом. 🤗
Вы также можете внести свой вклад в проект UMI:
- Помогая другим пользователям
- Мониторя список существующих проблем
- Рассказав о проекте в своих соцсетях
- Используя его в своих проектах
Настройте своё окружение для локальной разработки для удобства и "синхронизации" с текущим проектом. Так как UMI разрабатывается с использованием редактора VS Code, то все настройки и рекомендации предложены для него.
- Используйте
Monokai Proилиeppz!тему - Используйте
FiraCodeшрифт - Установите расширения:
- C#
- C# Dev Kit
- Unity
- Включите
Inlay Hintsв настройках C# расширения - Установить пакет
Visual Studio Editorв редакторе Unity - Поместите файл
.editorconfigв корневую папку проекта - Ура!
Вы можете поддержать проект любым из способов ниже:
- Bitcoin (BTC): 1VccPXdHeiUofzEj4hPfvVbdnzoKkX8TJ
- USDT (TRC20): TMHacMp461jHH2SHJQn8VkzCPNEMrFno7m
- TON: UQDVp346KxR6XxFeYc3ksZ_jOuYjztg7b4lEs6ulEWYmJb0f
- Карты Visa, Mastercard через Boosty
- Карты МИР через CloudTips
Перед тем как задать вопрос, лучшим решением будет посмотреть уже существующие проблемы, это может помочь. В любом случае, вы можете задать любой вопрос или отправить предложение по email или Telegram.
UMI выпущен под лицензией MIT. Используйте бесплатно и радуйтесь. 🎉