static void ConvertTextToTextMeshPro(Text text) { GameObject parent = text.gameObject; Vector2 sizeDelta = parent.GetComponent <RectTransform>().sizeDelta; TextMeshProSettings settings = GetTextMeshProSettings(text); Object.DestroyImmediate(text as Object, false); TextMeshProUGUI tmp = parent.AddComponent <TextMeshProUGUI>(); tmp.enabled = settings.Enabled; tmp.fontStyle = settings.FontStyle; tmp.fontSize = settings.FontSize; tmp.fontSizeMin = settings.FontSizeMin; tmp.fontSizeMax = settings.FontSizeMax; tmp.lineSpacing = settings.LineSpacing; tmp.richText = settings.EnableRichText; tmp.enableAutoSizing = settings.EnableAutoSizing; tmp.alignment = settings.TextAlignmentOptions; tmp.enableWordWrapping = settings.WrappingEnabled; tmp.overflowMode = settings.TextOverflowModes; tmp.text = settings.Text; tmp.color = settings.Color; tmp.raycastTarget = settings.RayCastTarget; parent.GetComponent <RectTransform>().sizeDelta = sizeDelta; Debug.Log("Converted Text to TextMeshPro on " + parent.name); }
static void ConvertTextToTextMeshPro(GameObject target) { TextMeshProSettings settings = GetTextMeshProSettings(target); if (settings == null) { return; } DestroyImmediate(target.GetComponent <Text>()); TextMeshProUGUI tmp = target.AddComponent <TextMeshProUGUI>(); tmp.enabled = settings.Enabled; tmp.fontStyle = settings.FontStyle; tmp.fontSize = settings.FontSize; tmp.fontSizeMin = settings.FontSizeMin; tmp.fontSizeMax = settings.FontSizeMax; tmp.lineSpacing = settings.LineSpacing; tmp.richText = settings.EnableRichText; tmp.enableAutoSizing = settings.EnableAutoSizing; tmp.alignment = settings.TextAlignmentOptions; tmp.enableWordWrapping = settings.WrappingEnabled; tmp.overflowMode = settings.TextOverflowModes; tmp.text = settings.Text; tmp.color = settings.Color; tmp.raycastTarget = settings.RayCastTarget; }
private void OnAddLanguage(object data) { SystemLanguage language = (SystemLanguage)data; LocalisedTextMeshPro localisedUITextMesh = (LocalisedTextMeshPro)target; Undo.RecordObject(localisedUITextMesh, "Added language override"); //Copy settings from text mesh TextMeshProSettings settings = TextMeshProSettings.FromTextMesh(localisedUITextMesh.TextMesh); LocalisedTextMeshPro.LanguageSettingsOverride languageSettingsOverride = new LocalisedTextMeshPro.LanguageSettingsOverride() { _language = language, _settings = settings, }; //If this is the first language settings also save current settings to default if (localisedUITextMesh._languageSettingsOverrides == null || localisedUITextMesh._languageSettingsOverrides.Length == 0) { localisedUITextMesh._defaultSettings = settings; localisedUITextMesh._languageSettingsOverrides = new LocalisedTextMeshPro.LanguageSettingsOverride[] { languageSettingsOverride }; } //Otherwise add new settings to overrides else { ArrayUtils.Add(ref localisedUITextMesh._languageSettingsOverrides, languageSettingsOverride); } //Then switch to editing this new language SwitchToEditingLanguage(language); }
public void OnBeforeSerialize() { #if UNITY_EDITOR //If this text mesh has language override settings... if (_textMesh != null && EditorUtility.IsDirty(_textMesh) && _languageSettingsOverrides != null && _languageSettingsOverrides.Length > 0) { //...work out which langauage we're currently editing SystemLanguage language = _editingLanguage != SystemLanguage.Unknown ? _editingLanguage : Localisation.GetCurrentLanguage(); bool foundLanguage = false; //check if we have an override for this language, if so save the current text mesh settings to that language for (int i = 0; i < _languageSettingsOverrides.Length; i++) { if (_languageSettingsOverrides[i]._language == language) { _languageSettingsOverrides[i]._settings = TextMeshProSettings.FromTextMesh(_textMesh); foundLanguage = true; break; } } //otherwise save them to default settings if (!foundLanguage) { _defaultSettings = TextMeshProSettings.FromTextMesh(_textMesh); } } #endif }