首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改每个TextMeshPro对象的“字体资产”

更改每个TextMeshPro对象的“字体资产”
EN

Game Development用户
提问于 2022-09-28 22:58:07
回答 1查看 517关注 0票数 0

我有一个大型项目在团结,我想改变字体为每个TextMeshPro对象在每个场景。我尝试过更改编辑> TextMesh专业>设置中的“默认字体资产”,但它并不像我所希望的那样工作。它改变了新创建的TextMeshPro对象的字体,但旧对象的字体仍然是旧的。

我找到的工作解决方案是重命名我的Font文件。例如,我的旧字体是"LiberationSans SDF.asset“,而我的新字体是”Almendra-正则SDF.asset“,所以我只需将”Almendra-正则SDF.asset“重命名为"LiberationSans SDF.asset”,它就能工作了。

然而,这个解决方案是..。脏的。是否有一个更好的网页来改变每个TextMeshPro对象在每个场景的字体?

EN

回答 1

Game Development用户

回答已采纳

发布于 2022-09-29 01:10:33

实际上,我认为您在文件资源管理器中重命名文件的解决方案非常好。然后,您可以将它重命名为您想要的名称内部的团结,所有的资产将指向正确的字体。

原因是联合资产不是通过名称,而是通过GUID相互引用的。GUID存储在文件资源管理器中的资产文件旁边的同名.meta文件中(尽管您可能需要启用显示隐藏文件才能看到它)。

通过重命名源文件,您可以将新的字体资产与现有资产的GUID配对,因此所有现有文件现在都指向它。

您可以通过将LiberationSans.ttf.meta重命名为新字体的名称(并将其放置在同一个文件夹中)来完成类似的任务。然后,现有的GUID将指向您的新字体,并且联合将为LiberationSans.ttf生成一个新的GUID,当注意到它不再有自己的.meta文件时。

或者,如果要保留新字体资产上的设置,则可以打开这两个资产的元文件并交换它们的GUID。下面是LiberationSans.ttf.meta对我来说的样子:

代码语言:javascript
运行
复制
fileFormatVersion: 2
guid: e3265ab4bf004d28a9537516768c1c75
timeCreated: 1484171297
licenseType: Pro
TrueTypeFontImporter:
  serializedVersion: 2
  fontSize: 16
  forceTextureCase: -2
  characterSpacing: 1
  characterPadding: 0
  includeFontData: 1
  use2xBehaviour: 0
  fontNames: []
  fallbackFontReferences: []
  customCharacters: 
  fontRenderingMode: 0
  userData: 
  assetBundleName: 
  assetBundleVariant: 

因此,将第二行复制到新资产的.meta中,反之亦然,将交换它们的ID,以便指向其中一个的引用现在指向另一个。

您还可以编写一个编辑器脚本,它使用UnityEditor.AssetDatabase类迭代所有场景/预置/等等,搜索要重新映射的字体引用,这将是一个更健壮/不那么麻烦的解决方案。但是对于一次性的全局替换,以这种方式处理文件可能会节省您调试这样一个脚本的时间。

票数 1
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/202701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档