Unity загружает шрифт с диска или из интернета - PullRequest
0 голосов
/ 04 июня 2018

Этот шрифт необходимо динамически менять, поэтому я не могу поместить его в Ресурсы.

Я не нашел никаких ресурсов или способов добиться этого, все говорят о Ресурсах.

РЕДАКТИРОВАТЬ: Я заглянул в AssetBunble, но он выглядел излишне, поэтому я подумал, что, возможно, потребовал, чтобы пользователь установил шрифт на своем компьютере, но Font.CreateDynamicFontFromOSFont ничего не делает.Независимо от заданного ввода (даже недействительного), он всегда будет возвращать один и тот же шрифт «Arial», и ничего визуально не изменится.

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

1 Ответ

0 голосов
/ 04 июня 2018

Нет Unity API для загрузки стандартного шрифта с диска или из Интернета в шрифт Unity.

Если вы используете Font.CreateDynamicFontFromOSFont, шрифт должен быть установлен на устройстве.Это легко сделать на некоторых платформах, таких как Windows, но чрезвычайно сложно на устройствах, таких как Android.


Рекомендуемый способ сделать это - использовать AssetBundles.Для создания AssetBundles вам понадобится Unity Editor, но он не нужен для загрузки AssetBundles во время выполнения.Поместите шрифты в AssetBundles, затем соберите их и разместите на сервере.Используйте UnityWebRequest API для загрузки Assetbundle, затем извлеките из него шрифт.Вы всегда можете обновить этот Assetbundle на сервере.

Если вы хотите, чтобы пользователь мог загружать шрифт из любого источника, вы можете автоматизировать сборку, спросив пользователя, где этот шрифт, возьмите этот шрифт.и отправьте / загрузите его на свой сервер с помощью UnityWebRequest API.На стороне сервера запустите Unity Editor в автономном режиме, получите отправленный ему шрифт и создайте из него пакет активов, затем отправьте его обратно в проигрыватель и загрузите на стороне клиента.

Итак, UnityWebRequestAssetBundle.GetAssetBundle используется для загрузки AssetBundle, а AssetBundle.LoadAssetAsync используется для шрифтов в нем.

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

...