[Unity学习教程] Unity使用TextMeshPro多字体和材质热更

[复制链接]
查看1298 | 回复0 | 2023-8-23 11:46:13 | 显示全部楼层 |阅读模式 来自 中国北京
近来Unity项目中使用到TextMeshPro做谈天,需要支持部分字体带描边,部分字体不带描边。想到的决解方案是:TextMeshPro支持多字体展示(详细可以检察组件的官方案例Link Example),就做了两个字体一个是带描边的一个是不带描边的。
   但是有个题目是多出来的一个字体需要放在Resources目录下见效,为了决解这个题目检察了TextMeshPro组件字体加载的源码,可以接纳对资源字体热更加载,再缓存到TextMeshPro组件的字体管理器中TMPro.MaterialReferenceManager.AddFontAsset
  1.        BaseAssetAsyncLoader loader = AssetBundleManager.Instance.LoadAssetAsync("fontname", typeof(TMPro.TMP_FontAsset));
  2.         TMPro.MaterialReferenceManager.AddFontAsset((TMPro.TMP_FontAsset)loader.asset);
复制代码
  代码思绪如上LoadAssetAsync是热更资源加载封装方法,TMPro.MaterialReferenceManager是组件字体管理类。在lua边调用也一样。
  方案优化:
   前面的部分字体带描边,部分字体不带描边,也可以使用material属性在同一种字体中切换差别的材质来实现。即:字体默认材质不带描边,需要带描边的通过富文本标签来切换。只需要将上面方案的富文本字体标签<font></font>换成<material></material>。然后这个材质需不需要热更就看你自己需要,热更的思绪和字体一样,方法API如下:
  1. TMPro.MaterialReferenceManager.AddFontMaterial
复制代码


来源:https://blog.csdn.net/waterdsm/article/details/128701472
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则