| | |
| | | |
| | | private bool m_IsApplied = false; |
| | | |
| | | public TextComponentType TargetTextType => m_TargetTextType; |
| | | public Component TargetTextComponent => m_TargetTextComponent; |
| | | // 开放 set 权限,允许外部或编辑器手动赋值 |
| | | public TextComponentType TargetTextType |
| | | { |
| | | get => m_TargetTextType; |
| | | set => m_TargetTextType = value; |
| | | } |
| | | |
| | | public Component TargetTextComponent |
| | | { |
| | | get => m_TargetTextComponent; |
| | | set => m_TargetTextComponent = value; |
| | | } |
| | | |
| | | public LanguageConfigDictionary LanguageConfigs => m_LanguageConfigs; |
| | | |
| | | private void Awake() => DetectTargetComponent(); |
| | | |
| | | private void OnEnable() |
| | | { |
| | |
| | | ApplyConfig(langId); |
| | | } |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | private void Reset() |
| | | { |
| | | DetectTargetComponent(); |
| | | if (!HasConfig(DefaultLangId)) ReadCurrentToConfig(DefaultLangId); |
| | | } |
| | | #endif |
| | | |
| | | public LanguageConfigItem GetConfig(string languageId) => m_LanguageConfigs.Get(languageId); |
| | | public void SetConfig(string languageId, LanguageConfigItem config) => m_LanguageConfigs.Set(languageId, config); |
| | |
| | | return languageId; |
| | | } |
| | | |
| | | private void DetectTargetComponent() |
| | | { |
| | | if (m_TargetTextComponent != null) |
| | | { |
| | | DetermineTextType(m_TargetTextComponent); |
| | | return; |
| | | } |
| | | |
| | | m_TargetTextComponent = GetComponent<GradientText>() ?? GetComponentInChildren<GradientText>(true) as Component |
| | | ?? GetComponent<TextEx>() ?? GetComponentInChildren<TextEx>(true) as Component |
| | | ?? GetComponent<Text>() ?? GetComponentInChildren<Text>(true) as Component; |
| | | |
| | | DetermineTextType(m_TargetTextComponent); |
| | | } |
| | | |
| | | private void DetermineTextType(Component component) |
| | | { |
| | | m_TargetTextType = component switch |
| | | { |
| | | GradientText _ => TextComponentType.GradientText, |
| | | TextEx _ => TextComponentType.TextEx, |
| | | Text _ => TextComponentType.Text, |
| | | _ => TextComponentType.None |
| | | }; |
| | | } |
| | | |
| | | #if UNITY_EDITOR |
| | | [ContextMenu("刷新组件检测")] |
| | | public void Editor_ForceRefreshDetection() |
| | | { |
| | | DetectTargetComponent(); |
| | | UnityEditor.EditorUtility.SetDirty(this); |
| | | } |
| | | |
| | | [ContextMenu("读取当前配置")] |
| | | public void Editor_ReadCurrentConfig() |
| | | { |