Нет 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 , но вы должны сделать это в режиме без головы.