76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
/*
|
||
* @Author: 白哉
|
||
* @Description: TextMeshPro 多语言配置
|
||
* @Date: 2025年07月21日 星期一 20:07:39
|
||
* @Modify: 2026-05-10 增加 ApplyXxx 开关:未勾选的字段不写入 TMP,避免误覆盖 prefab 原值
|
||
*/
|
||
|
||
|
||
using System;
|
||
using TMPro;
|
||
|
||
|
||
namespace Logic.Multilingual
|
||
{
|
||
[Serializable]
|
||
public class MultiTextConfig
|
||
{
|
||
public MultilingualType Type;
|
||
|
||
// 五对:开关 + 数值。开关=false 时该字段不写入 TMP,保留 prefab 原值
|
||
public bool ApplyFontSize;
|
||
public float FontSize;
|
||
|
||
public bool ApplyCharacterSpacing;
|
||
public float CharacterSpacing;
|
||
|
||
public bool ApplyWordSpacing;
|
||
public float WordSpacing;
|
||
|
||
public bool ApplyLineSpacing;
|
||
public float LineSpacing;
|
||
|
||
public bool ApplyParagraphSpacing;
|
||
public float ParagraphSpacing;
|
||
|
||
|
||
public MultiTextConfig(TextMeshProUGUI textMeshPro, MultilingualType type)
|
||
{
|
||
Type = type;
|
||
// 从已有 TMP 抓取一份配置时,默认所有字段都生效(保留旧的"全量记录"行为)
|
||
ApplyFontSize = true;
|
||
FontSize = textMeshPro.fontSize;
|
||
ApplyCharacterSpacing = true;
|
||
CharacterSpacing = textMeshPro.characterSpacing;
|
||
ApplyWordSpacing = true;
|
||
WordSpacing = textMeshPro.wordSpacing;
|
||
ApplyLineSpacing = true;
|
||
LineSpacing = textMeshPro.lineSpacing;
|
||
ApplyParagraphSpacing = true;
|
||
ParagraphSpacing = textMeshPro.paragraphSpacing;
|
||
}
|
||
|
||
public void ExcuteConfig(TextMeshProUGUI textMeshPro)
|
||
{
|
||
// Preset 调用入口:仅写入勾选的字段,未勾选的字段保留 prefab 原值
|
||
if (ApplyFontSize) textMeshPro.fontSize = FontSize;
|
||
if (ApplyCharacterSpacing) textMeshPro.characterSpacing = CharacterSpacing;
|
||
if (ApplyWordSpacing) textMeshPro.wordSpacing = WordSpacing;
|
||
if (ApplyLineSpacing) textMeshPro.lineSpacing = LineSpacing;
|
||
if (ApplyParagraphSpacing) textMeshPro.paragraphSpacing = ParagraphSpacing;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Override 调用入口:5 个字段强制全部写入,无视 ApplyXxx 开关。
|
||
/// 语义:玩家在 prefab 上手动配了 override,就是想让这 5 个字段全用配置的值。
|
||
/// </summary>
|
||
public void ExcuteConfigForce(TextMeshProUGUI textMeshPro)
|
||
{
|
||
textMeshPro.fontSize = FontSize;
|
||
textMeshPro.characterSpacing = CharacterSpacing;
|
||
textMeshPro.wordSpacing = WordSpacing;
|
||
textMeshPro.lineSpacing = LineSpacing;
|
||
textMeshPro.paragraphSpacing = ParagraphSpacing;
|
||
}
|
||
}
|
||
} |