unity3d 如何使用Unity本地化从脚本翻译文本?

wlzqhblo  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(296)

我知道如何翻译文本等等。但是我不知道如何翻译来自脚本(textMeshPro + value)的文本,就像我的这个脚本。我使用的是Unity自己的本地化,这对我来说很容易使用。
翻译如下:硬币和死亡计数+值(数据.硬币)
`

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;

public class SaveSlot : MonoBehaviour
{
    [Header("Profile")]
    [SerializeField] private string profileId = "";

    [Header("Content")]
    [SerializeField] private GameObject noDataContent;
    [SerializeField] private GameObject hasDataContent;
    [SerializeField] private TextMeshProUGUI CoinText;
    [SerializeField] private TextMeshProUGUI deathCountText;

    [Header("Clear Data Button")]
    [SerializeField] private Button clearButton;

    public bool hasData { get; private set; } = false;

    private Button saveSlotButton;

    private void Awake()
    {
        saveSlotButton = this.GetComponent<Button>();
    }

    public void SetData(GameData data)
    {
        // there's no data for this profileId
        if (data == null)
        {
            hasData = false;
            noDataContent.SetActive(true);
            hasDataContent.SetActive(false);
            clearButton.gameObject.SetActive(false);
        }
        // there is data for this profileId
        else
        {
            hasData = true;
            noDataContent.SetActive(false);
            hasDataContent.SetActive(true);
            clearButton.gameObject.SetActive(true);
        
            CoinText.text = "Coins: " + data.coin;
            deathCountText.text = "DEATH COUNT: " + data.deathCount;
        }
    }

    public string GetProfileId()
    {
        return this.profileId;
    }

    public void SetInteractable(bool interactable)
    {
        saveSlotButton.interactable = interactable;
        clearButton.interactable = interactable;
    }
}

`
翻译字符串我已经知道或多或少,但没有TextMeshPro +的值。我怎么翻译?

ycggw6v2

ycggw6v21#

如果您已经设置了Unity Localization软件包,您应该已经使用您的翻译创建了本地化表。
要获取所需的翻译,可以使用带有以下参数的异步GetLocalizedString(string tableName, string key)方法:

  • tableName-用于搜索原始字符串的表。
  • key-从KeyDatabase取得的字串密钥,应该用来寻找翻译的文字。

对于“Coins”字符串,您可以使用GetLocalizedString(string tableName, string key, int puralValue)将复数类型包括在extend the parameters
或者,从2020.3+开始,您可以直接使用本地化场景控件轻松地本地化TextMeshPro组件。或者,如果您使用的是旧版本,则可以通过Localize String Event

相关问题