这个字体需要动态更改,所以我不能把它放在参考资料中。
我没有找到任何资源或方法来实现这一点,所有人都在谈论资源。
编辑:我确实调查了AssetBunble,但它看起来有点过分,所以我想可能要求用户在他的机器上安装字体,但Font.CreateDynamicFontFromOSFont
什么都不做。无论给定的输入(甚至无效),它总是返回相同的“Arial”字体,并且没有任何视觉上的变化。
我可能会再次查看AssetBundles,但我不希望在目标计算机上安装Unity,如果我理解正确,则无法在不运行Unity的情况下构建资产包。
答案 0 :(得分:2)
没有Unity API可以将标准字体从磁盘或Web加载到Unity的Font中。
如果使用Font.CreateDynamicFontFromOSFont
,则必须在设备上安装字体。这在像Windows这样的平台上很容易做到,但在像Android这样的设备上非常难。
建议的方法是使用AssetBundles。您将需要Unity Editor来创建AssetBundle,但您不需要它在运行时加载AssetBundles。将字体放入AssetBundles然后构建它并将其托管在服务器上。使用UnityWebRequest
API下载Assetbundle然后从中提取字体。您始终可以在服务器上更新此Assetbundle。
如果您希望用户能够从任何来源加载字体,您可以通过询问用户字体的位置来自动化构建部件,使用该字体并使用{{1将其发送/上传到您的服务器API。在服务器端,以无头模式运行Unity Editor,检索发送给它的字体并从中构建Assetbundle,然后将其发送回播放器并在客户端加载。
因此,UnityWebRequestAssetBundle.GetAssetBundle
用于下载AssetBundle,AssetBundle.LoadAssetAsync
用于其中的字体。
除非您拥有非常昂贵的Unity源代码,否则没有其他方法可以做到这一点。通过这种方式,您不需要安装字体,也不会在移动设备上遇到问题。这篇文章展示了如何构建和加载Assetbundle,但你必须在无头模式下这样做。