Быстрый старт · Документация · Отчёт об ошибке
Этот пакет позволяет использовать нативные поля ввода на 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 выдаст ошибку.
Для начала использования 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
– изменение языка клавиатуры
- Скопируйте 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. Используйте бесплатно и радуйтесь. 🎉