π English | Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ°
ΠΠΠΠΠΠΠΠ‘Π’Π | Π¨ΠΠΠΠΠΠ Π‘Π’ΠΠ Π’ | ΠΠΠΠΠΠΠΠ | Π€ΠΠ ΠΠΠ’ CSV | Π¨Π ΠΠ€Π’Π | API | ΠΠΠΠ Π‘Π¦ΠΠΠ | ΠΠ ΠΠΠΠ’ΠΠ | ΠΠΠ¦ΠΠΠΠΠ― | ΠΠΠΠ’Π ΠΠΠΠ
ΠΡΠΎΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π»ΠΎΠΊΠ°Π»ΡΠ·Π°ΡΡΡ ΡΠ΅ΠΊΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ CSV Π΄Π»Ρ ΠΏΡΠΎΡΠΊΡΡΠ² Unity Π· Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½ΡΠΌ TextMeshPro. Π§ΠΈΡΠ°Ρ CSV-ΡΠ°ΠΉΠ», ΠΏΠΎΠ²Π΅ΡΡΠ°Ρ ΡΡΠ΄ΠΊΠΈ, Π·ΠΌΡΠ½ΡΡ ΡΡΠΈΡΡΠΈ ΡΠ° ΠΊΠ΅ΡΡΡ Π²ΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΡΠ·Π°ΡΡΡ. Π‘ΡΠ²ΠΎΡΠ΅Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ»ΠΎ-ΡΠΎΠ·ΡΠΎΠ±Π½ΠΈΠΊΡΠ² ΡΠ° ΡΠ½Π΄Ρ-ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠΊΡ Ρ ΠΎΡΡΡΡ ΡΡΠΈΠΌΠ°ΡΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ ΠΏΠΎΠ·Π° ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ ΠΉ ΠΊΠ΅ΡΡΠ²Π°ΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· Π·ΠΎΠ²Π½ΡΡΠ½Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ.
ΠΠΆΠ΅ΡΠ΅Π»ΠΎ: Π¦Π΅ ΡΠΏΡΠΎΡΠ΅Π½Π° Π²Π΅ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ·Π°ΡΡΡ Π· Π°ΡΠ΅ΡΡ Automatic Tutorial Maker.
ΠΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ CSV
Π Π΅Π΄Π°Π³ΡΠΉΡΠ΅ Π² Excel, Google Sheets Π°Π±ΠΎ Π±ΡΠ΄Ρ-ΡΠΊΠΎΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ CSV. ΠΠ° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ: ΡΠΎΠ·Π΄ΡΠ»ΡΠ½ΠΈΠΊ ;, UTF-8, ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΠΉ ΠΊΠ²Π°Π»ΡΡΡΠΊΠ°ΡΠΎΡ ".
12+ ΠΌΠΎΠ² Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ
ΠΠ½Π³Π»ΡΠΉΡΡΠΊΠ°, ΠΊΠΈΡΠ°ΠΉΡΡΠΊΠ°, ΡΠΏΠΎΠ½ΡΡΠΊΠ°, Π½ΡΠΌΠ΅ΡΡΠΊΠ°, ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠ°, ΡΡΠΏΠ°Π½ΡΡΠΊΠ°, ΠΏΠΎΡΡΡΠ³Π°Π»ΡΡΡΠΊΠ°, ΡΡΠ°Π»ΡΠΉΡΡΠΊΠ°, ΡΠΊΡΠ°ΡΠ½ΡΡΠΊΠ°, ΠΏΠΎΠ»ΡΡΡΠΊΠ°, ΡΡΡΠ΅ΡΡΠΊΠ°, ΠΊΠΎΡΠ΅ΠΉΡΡΠΊΠ°. ΠΠΎΠ΄Π°ΠΉΡΠ΅ Π²Π»Π°ΡΠ½Ρ ΡΠ΅ΡΠ΅Π· enum Language Π°Π±ΠΎ Π½Π°Π·Π²Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° Π·ΠΌΡΠ½Π° ΡΡΠΈΡΡΡΠ²
ΠΡΠΈΠ·Π½Π°ΡΡΠ΅ ΡΡΠΈΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠΆΠ½ΠΎΡ ΠΌΠΎΠ²ΠΈ (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, NotoSansTC Π΄Π»Ρ ΠΊΠΈΡΠ°ΠΉΡΡΠΊΠΎΡ), ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΄Π±ΠΈΡΠ°ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄Ρ. ΠΠΊΠ»ΡΡΠ°Ρ ΡΡΠΈΡΡΠΈ Noto Sans CJK + Audex Π· Π»ΡΡΠ΅Π½Π·ΡΡΠΌΠΈ.
ΠΠΈΠ½Π°ΠΌΡΡΠ½Ρ ΠΏΠ»Π΅ΠΉΡΡ
ΠΎΠ»Π΄Π΅ΡΠΈ
ΠΡΡΠ°Π²Π»ΡΠΉΡΠ΅ Π·ΠΌΡΠ½Π½Ρ Π² ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΠΈ: {playerName}, {score}, {anyVariable} β Π·Π°ΠΏΠΎΠ²Π½ΡΡΡΡΡΡ ΠΏΡΠ΄ ΡΠ°Ρ Π²ΠΈΠΊΠΎΠ½Π°Π½Π½Ρ.
ΠΡΠ΄ΡΡΠΈΠΌΠΊΠ° ΡΠ΅Π³ΡΠ² TextMeshPro
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ <color=#FF0000>, <sprite=0>, Π΅ΠΌΠΎΠ΄Π·Ρ π Π±Π΅Π·ΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄Π°Ρ
.
ΠΠ²Π° ΡΠ΅ΠΆΠΈΠΌΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ:
InputData Ρ Assets/CSV Localization/InputDataΠΡΠΈΠΌΡΡΠΊΠ°: ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ²ΠΎΡΠΈΡΠΈ Π²Π»Π°ΡΠ½ΠΈΠΉ Π°ΡΠ΅Ρ InputData (
ΠΡΠ°Π²ΠΈΠΉ ΠΊΠ»ΡΠΊ β Create β Localization System Mini β InputData) ΡΠ° ΡΠ°ΠΉΠ» CSV Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈ.
using LocalizationSystemMini;
public class GameManager : MonoBehaviour
{
[SerializeField] private InputStringsScriptableObject textStrings;
void Start()
{
// ΠΠ½ΡΡΡΠ°Π»ΡΠ·Π°ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ·Π°ΡΡΡ (Π·Π°Π²Π°Π½ΡΠ°ΠΆΡΡ Π·Π±Π΅ΡΠ΅ΠΆΠ΅Π½Ρ ΠΌΠΎΠ²Ρ Π°Π±ΠΎ Π²ΡΡΠ°Π½ΠΎΠ²Π»ΡΡ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ)
textStrings.InitializeLocalizator();
}
}
Π ΡΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΡ β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Button β OnClick():
English, Japanese, Ukrainian ΡΠΎΡΠΎ.ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΡΡ ΡΡΠ΄ΠΊΡΠ²: ΠΡΠ·ΡΠ°Π»ΡΠ½Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ (Excel, Google Sheets) ΠΏΠΎΡΠΈΠ½Π°ΡΡΡΡΡ Π· ΡΡΠ΄ΠΊΠ° 1, Π°Π»Π΅ ΠΊΠΎΠ΄ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡ ΡΠ½Π΄Π΅ΠΊΡΠ°ΡΡΡ Π²ΡΠ΄ 0. ΠΠΎΠ»ΠΈ Π²ΠΊΠ°Π·ΡΡΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΡΡΠ΄ΠΊΠ°, Π²ΡΠ΄Π½ΡΠΌΠ°ΠΉΡΠ΅ 1 Π²ΡΠ΄ ΡΠΎΠ³ΠΎ, ΡΠΎ Π±Π°ΡΠΈΡΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΡΡΠ΄ΠΎΠΊ 2 Π² Excel = ΡΠ½Π΄Π΅ΠΊΡ 1 Π² ΠΊΠΎΠ΄Ρ). ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ, Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ ΠΊΠ»ΡΡΡ Π·Π°ΠΌΡΡΡΡ Π½ΠΎΠΌΠ΅ΡΡΠ² ΡΡΠ΄ΠΊΡΠ². Π¦Π΅ Π½Π°Π΄ΡΠΉΠ½ΡΡΠ΅ Ρ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΌΡΠ½ΡΡΠΈ ΡΡΠ΄ΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΡΡΡΡΠΌΠΈ.
Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ β ΠΊΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²Ρ ΠΎΠ±βΡΠΊΡΠΈ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΠ½ΠΎΠ²Π»ΡΡ ΠΏΡΠΈ Π·ΠΌΡΠ½Ρ ΠΌΠΎΠ²ΠΈ, ΠΊΠ΅ΡΡΡ Π·ΠΌΡΠ½ΠΎΡ ΡΡΠΈΡΡΡ
ΠΠΈΠΊΠ»ΠΈΠΊΠ°ΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·: Π½Π° Start Π°Π±ΠΎ ΠΏΡΠΈ ΡΡΠ²ΠΎΡΠ΅Π½Π½Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡ
ΠΎΠ±βΡΠΊΡΡΠ²
void Start()
{
// ΠΡΠΎΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ
textStrings.FillTextObject(2, textComponent);
// ΠΠ° ΠΊΠ»ΡΡΠ΅ΠΌ (ΡΡΠΊΠ°Ρ ΠΊΠ»ΡΡ Π² ΠΊΠΎΠ»ΠΎΠ½ΡΡ A)
textStrings.FillTextObjectByKey("settings_key", textComponent);
// Π ΠΏΠ»Π΅ΠΉΡΡ
ΠΎΠ»Π΄Π΅ΡΠ°ΠΌΠΈ (ΠΏΠΎΡΡΠ΅Π±ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡ Π΄Π»Ρ ΠΎΠ½ΠΎΠ²Π»Π΅Π½Π½Ρ Π·ΠΌΡΠ½Π½ΠΈΡ
)
textStrings.FillTextObjectWithPlaceholders(2, textComponent, userName, score);
textStrings.FillTextObjectWithPlaceholdersByKey("row_key", textComponent, userName, score);
}
ΠΠΈΠ½Π°ΠΌΡΡΠ½ΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ β Π·ΡΠΈΡΡΡ Π½Π° Π²ΠΈΠΌΠΎΠ³Ρ, Π±Π΅Π· Π·ΠΌΡΠ½ΠΈ ΡΡΠΈΡΡΡ
ΠΠΈΠΊΠ»ΠΈΠΊΠ°ΠΉΡΠ΅ Π² Update() Π°Π±ΠΎ ΠΊΠΎΠ»ΠΈ Π΄Π°Π½Ρ ΡΠ°ΡΡΠΎ Π·ΠΌΡΠ½ΡΡΡΡΡΡ
void Update()
{
// ΠΠ° ΡΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΡΡΠ΄ΠΊΠ°
textComponent.text = textStrings.GetStringText(2);
// ΠΠ° ΠΊΠ»ΡΡΠ΅ΠΌ
textComponent.text = textStrings.GetStringTextByKey("greeting_key");
// Π ΠΏΠ»Π΅ΠΉΡΡ
ΠΎΠ»Π΄Π΅ΡΠ°ΠΌΠΈ
textComponent.text = textStrings.ReplacePlaceholders(3, playerName, level);
textComponent.text = textStrings.ReplacePlaceholdersByKey("row_key", playerName, level);
// Π ΡΡΠ½Π΅ ΠΎΠ½ΠΎΠ²Π»Π΅Π½Π½Ρ ΡΡΠΈΡΡΡ (Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈ)
textComponent.font = textStrings.GetCurrentFont();
}
ΠΠΌΡΠ½Π° ΠΌΠΎΠ²ΠΈ β ΠΏΡΠΈΠ²βΡΠΆΡΡΡ Π΄ΠΎ UI ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠΈΠΊΠ°Π½Π½Ρ ΠΌΠΎΠ²ΠΈ
// ΠΠ° enum
textStrings.ChangeLanguage(InputStringsScriptableObject.Language.Japanese);
// ΠΠ° ΡΡΠ΄ΠΊΠΎΠΌ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π²Π»Π°ΡΠ½ΠΈΡ
ΠΌΠΎΠ²)
textStrings.ChangeLanguage("Ukrainian");
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ·Π°ΡΡΡ ΡΠ΅ΠΊΡΡΡ Π±Π΅Π·ΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π½Π° ΠΎΠ±βΡΠΊΡΠ°Ρ ΡΡΠ΅Π½ΠΈ Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½Π½Ρ ΠΊΠΎΠ΄Ρ.
ΠΠ»Ρ ΡΠ΅ΠΊΡΡΡ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ Parameter Selector:
Update() Ρ LocalizedTooltip.csFillTextObject() ΠΏΡΡΠ»Ρ Π·ΠΌΡΠ½ΠΈ Π·Π½Π°ΡΠ΅Π½Ρ| Β | A | B | C | D | E | F | β¦ |
|---|---|---|---|---|---|---|---|
| 1 | Use keys | Default | English | Chinese | Japanese | German | β¦ |
| 2 | greeting_key | hello | hello | δ½ ε₯½ | γγγ«γ‘γ― | hallo | β¦ |
| 3 | welcome_key | Welcome, {name}! | Welcome, {name}! | ζ¬’θΏοΌ{name}οΌ | γγγγγ{name}οΌ | Willkommen, {name}! | β¦ |
| 4 | yes_key | Yes | Yes | ζ― | γ―γ | Ja | β¦ |
GetStringTextByKey){variableName}. ΠΠΎΠ·ΠΈΡΡΡ Π² ΡΠ΅ΡΠ΅Π½Π½Ρ ΠΌΠΎΠΆΠ΅ Π²ΡΠ΄ΡΡΠ·Π½ΡΡΠΈΡΡ ΠΌΡΠΆ ΠΌΠΎΠ²Π°ΠΌΠΈ, Π°Π»Π΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΌΠ°Ρ Π±ΡΡΠΈ ΡΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΠΌ Ρ Π²ΡΡΡ
ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄Π°Ρ
.ΠΠ°ΠΆΠ»ΠΈΠ²ΠΎ: ΠΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅ΡΠΈ Π·Π°ΠΌΡΠ½ΡΡΡΡΡΡ Π·Π° ΠΏΠΎΠ·ΠΈΡΡΡΡ, Π° Π½Π΅ Π·Π° Π½Π°Π·Π²ΠΎΡ. Π‘ΠΈΡΡΠ΅ΠΌΠ° Π·Π°ΠΌΡΠ½ΡΡ 1-ΠΉ ΠΏΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅Ρ Π½Π° 1-Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ, 2-ΠΉ Π½Π° 2-Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ ΡΠΎΡΠΎ, Π½Π΅Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²ΡΠ΄ ΡΠΎΠ³ΠΎ, ΡΠΎ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΡΠ³ΡΡΠ½ΠΈΡ Π΄ΡΠΆΠΎΠΊ.
ΠΡΠΈΠΊΠ»Π°Π΄ Π· Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ:
ReplacePlaceholders(row, "John", 100)β ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
EN:"Player {name} has {score} coins"β βPlayer John has 100 coinsβ
UA:"Π£ Π³ΡΠ°Π²ΡΡ {name} Ρ {score} ΠΌΠΎΠ½Π΅Ρ"β βΠ£ Π³ΡΠ°Π²ΡΡ John Ρ 100 ΠΌΠΎΠ½Π΅Ρβ
(ΠΠ΄Π½Π°ΠΊΠΎΠ²ΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ: {name} ΠΏΠ΅ΡΡΠΈΠΉ, {score} Π΄ΡΡΠ³ΠΈΠΉ)β ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
UA:"{score} ΠΌΠΎΠ½Π΅Ρ Ρ Π³ΡΠ°Π²ΡΡ {name}"β βJohn ΠΌΠΎΠ½Π΅Ρ Ρ Π³ΡΠ°Π²ΡΡ 100β (ΠΠΌΡΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ: ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π°ΠΌΡΠ½ΡΡ {score} Π½Π° βJohnβ, {name} Π½Π° 100)
ΠΠ»Ρ ΠΌΠΎΠ² Π·Ρ ΡΠΏΠ΅ΡΡΠ°Π»ΡΠ½ΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ (ΠΊΠΈΡΠ°ΠΉΡΡΠΊΠ°, ΡΠΏΠΎΠ½ΡΡΠΊΠ°, ΠΊΠΎΡΠ΅ΠΉΡΡΠΊΠ°):
ChineseNotoSansTC-Regular SDFΠ‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·ΠΌΡΠ½ΡΡ ΡΡΠΈΡΡΠΈ Π½Π° ΡΡ, ΡΠΎ Ρ ΡΠΏΠΈΡΠΊΡ, ΠΏΡΠΈ Π·ΠΌΡΠ½Ρ ΠΌΠΎΠ²ΠΈ.
| ΠΠ΅ΡΠΎΠ΄ | ΠΠΏΠΈΡ | ΠΠΈΠΏΠ°Π΄ΠΎΠΊ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ |
|---|---|---|
InitializeLocalizator() |
ΠΠ°Π²Π°Π½ΡΠ°ΠΆΠΈΡΠΈ Π·Π±Π΅ΡΠ΅ΠΆΠ΅Π½Ρ ΠΌΠΎΠ²Ρ Π°Π±ΠΎ Π²ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠΈ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ | ΠΠΈΠΊΠ»ΠΈΠΊΠ°ΡΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π½Π° ΡΡΠ°ΡΡΡ Π³ΡΠΈ |
ChangeLanguage(Language) |
ΠΠ΅ΡΠ΅ΠΌΠΊΠ½ΡΡΠΈ Π½Π° ΠΌΠΎΠ²Ρ Π· enum | Π’Π΅ΡΡΡΠ²Π°Π½Π½Ρ Π² ΡΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΡ |
ChangeLanguage(string) |
ΠΠ΅ΡΠ΅ΠΌΠΊΠ½ΡΡΠΈ Π·Π° Π½Π°Π·Π²ΠΎΡ ΡΡΠ΄ΠΊΠ° | UI ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠ², Π²Π»Π°ΡΠ½Ρ ΠΌΠΎΠ²ΠΈ |
GetStringText(int row) |
ΠΡΡΠΈΠΌΠ°ΡΠΈ ΡΠ΅ΠΊΡΡ Π·Π° ΡΡΠ΄ΠΊΠΎΠΌ | ΠΠΈΠ½Π°ΠΌΡΡΠ½Π΅ Π·ΡΠΈΡΡΠ²Π°Π½Π½Ρ |
GetStringTextByKey(string key) |
ΠΡΡΠΈΠΌΠ°ΡΠΈ ΡΠ΅ΠΊΡΡ Π·Π° ΠΊΠ»ΡΡΠ΅ΠΌ | ΠΠΈΠ½Π°ΠΌΡΡΠ½Π΅ Π·ΡΠΈΡΡΠ²Π°Π½Π½Ρ |
FillTextObject(int row, TMP_Text) |
ΠΠ΅ΡΡΠ²Π°ΡΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΠΉ ΠΎΠ±βΡΠΊΡ | Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΠΉ UI |
ReplacePlaceholders(int row, params object[]) |
ΠΡΡΠΈΠΌΠ°ΡΠΈ ΡΠ΅ΠΊΡΡ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ | ΠΠΈΠ½Π°ΠΌΡΡΠ½ΠΈΠΉ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ |
FillTextObjectWithPlaceholders(int row, TMP_Text, params object[]) |
ΠΠ΅ΡΡΠ²Π°ΡΠΈ ΡΠ΅ΠΊΡΡ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ | Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΠΉ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ |
ReplacePlaceholdersByKey(string key, params object[]) |
ΠΡΡΠΈΠΌΠ°ΡΠΈ ΡΠ΅ΠΊΡΡ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ | ΠΠΈΠ½Π°ΠΌΡΡΠ½ΠΈΠΉ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ |
FillTextObjectWithPlaceholdersByKey(string key, TMP_Text textToFill, params object[]) |
ΠΠ΅ΡΡΠ²Π°ΡΠΈ ΡΠ΅ΠΊΡΡ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ | Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΠΉ Π·Ρ Π·ΠΌΡΠ½Π½ΠΈΠΌΠΈ |
GetCurrentFont() |
ΠΡΡΠΈΠΌΠ°ΡΠΈ ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΡΠ½ΠΎΡ ΠΌΠΎΠ²ΠΈ | Π ΡΡΠ½Π΅ ΠΊΠ΅ΡΡΠ²Π°Π½Π½Ρ ΡΡΠΈΡΡΠΎΠΌ |
_currentLanguageString β ΠΠΎΡΠΎΡΠ½Π° ΠΌΠΎΠ²Π° ΡΠΊ string. ΠΡΠ΄ΡΡΠ΅ΠΆΡΠΉΡΠ΅ ΡΠ΅ Π΄Π»Ρ Π²ΠΈΡΠ²Π»Π΅Π½Π½Ρ Π·ΠΌΡΠ½ ΠΌΠΎΠ²ΠΈ Π² Π·ΠΎΠ²Π½ΡΡΠ½ΡΡ
ΡΠΊΡΠΈΠΏΡΠ°Ρ
(Π½Π°ΠΏΡΠΈΠΊΠ»Π°Π΄, if (language != textStrings._currentLanguageString)).
ΠΡΠ΄ΠΊΡΠΈΠΉΡΠ΅ DemoScene ΡΠΎΠ± ΠΏΠΎΠ±Π°ΡΠΈΡΠΈ Π²ΡΡ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΡ Π² Π΄ΡΡ.
TextCallExamplesΠΠΈΠ²ΡΡΡΡ TextCallExamples.cs Π΄Π»Ρ ΡΠ°Π±Π»ΠΎΠ½ΡΠ² ΡΠ΅Π°Π»ΡΠ·Π°ΡΡΡ:
ΠΠ±Π΅ΡΠ΅ΠΆΠ΅Π½Π° ΠΌΠΎΠ²Π°
ΠΠ±Π΅ΡΡΠ³Π°ΡΡΡΡΡ Π² Application.persistentDataPath/LocalizationFolder/language_global.json
ΠΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ βOpen Saved Language Fileβ Π² ΡΠ½ΡΠΏΠ΅ΠΊΡΠΎΡΡ InputData Π΄Π»Ρ Π½Π°Π²ΡΠ³Π°ΡΡΡ Π΄ΠΎ ΡΡΡΡ ΠΏΠ°ΠΏΠΊΠΈ.
Language Π² InputStringsScriptableObject.csChangeLanguage(string) Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΡΠΊΠ°ΡΡΡ enumΠΠ΅Π·ΠΊΠΎΡΡΠΎΠ²Π½ΠΎ Π΄Π»Ρ Π²ΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ Π² ΠΎΡΠΎΠ±ΠΈΡΡΠΈΡ ΡΠ° ΠΊΠΎΠΌΠ΅ΡΡΡΠΉΠ½ΠΈΡ ΠΏΡΠΎΡΠΊΡΠ°Ρ .
ΠΠ»Ρ ΠΏΠΎΠ²Π½ΠΎΡΡΠ½ΠΊΡΡΠΎΠ½Π°Π»ΡΠ½ΠΎΡ Π²Π΅ΡΡΡΡ ΡΠ΅ΠΊΠ½ΡΡΡ: Automatic Tutorial Maker Π² Unity Asset Store
Π¦Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡΡΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ·Π°ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡ ΠΏΡΠ΄ΠΊΠ°Π·ΠΎΠΊ, Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ ΠΎΠ΄ΠΈΡΠΈ Π·Π½Π°ΡΠ΅Π½Π½Ρ Π·Π° Π½Π°ΠΉΠ±Π»ΠΈΠΆΡΠΈΠΌ ΡΠΏΡΠ²ΠΏΠ°Π΄ΡΠ½Π½ΡΠΌ (Π±Π΅Π· ΠΏΡΠΈΠ²`ΡΠ·ΠΊΠΈ Π΄ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠΈ ΠΊΠ»ΡΡΠ° ΡΡΠ΄ΠΊΠ°) ΡΠ° Π΅ΠΊΡΠΏΠΎΡΡΡΠ²Π°ΡΠΈ Π°Π²ΡΠΎ-Π·Π³Π΅Π½Π΅ΡΠΎΠ²Π°Π½Ρ Π°Π±ΠΎ Π²ΡΡΡΠ½Ρ ΡΡΠ²ΠΎΡΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠΈ Ρ CSV Π·Ρ Scriptable Object. Π‘Ρ ΠΎΠ²ΠΈΡΠ΅ ΠΌΡΡΡΠΈΡΡ ΡΡΡ Π²Π±ΡΠ΄ΠΎΠ²Π°Π½Ρ ΠΏΡΠ΄ΠΊΠ°Π·ΠΊΠΈ, Π° ΡΠ°ΠΊΠΎΠΆ Π΄ΠΎΠ΄Π°ΡΠΊΠΎΠ²Ρ ΡΠ΅ΠΊΡΡΠΈ, ΡΡΠ²ΠΎΡΠ΅Π½Ρ Π² ΡΡΡΡ ΡΡΠ΅Π½Π°Ρ Ρ Π½Π°Π²ΡΠ°Π»ΡΠ½ΠΈΡ ΠΊΡΠΎΠΊΠ°Ρ Unity-ΠΏΡΠΎΡΠΊΡΡ.
P.S. ΠΠ° Π±Π°Π·Ρ CSV Π²ΠΆΠ΅ Ρ ΡΡΡΠ΅Π½Π½Ρ Localization Package Π²ΡΠ΄ Unity, ΡΠΊΠ΅ ΠΌΡΡΡΠΈΡΡ Π±ΡΠ»ΡΡΡΡΡΡ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΈΡ ΡΡΠ½ΠΊΡΡΠΉ. Π ΡΠ΅ - ΡΠΊ ΠΏΡΠΎΡΡΠ° Π²Π΅ΡΡΡΡ Π΄Π»Ρ ΡΠ½Π΄Ρ, Π· Π΄Π΅ΡΠΊΠΈΠΌΠΈ ΡΠ²ΠΎΡΠΌΠΈ ΠΏΠ΅ΡΠ΅Π²Π°Π³Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, Π²ΠΌΡΡ ΠΊΠ΅ΡΡΠ²Π°ΡΠΈ ΠΏΠ°ΡΡ TMP_Text + ΠΉΠΎΠ³ΠΎ ΡΡΠ΄ΠΎΠΊ, ΡΠΎΠ± ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄Ρ ΠΎΠ½ΠΎΠ²ΠΈΡΠΈ Π²ΡΡ ΠΏΠ°ΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ, ΡΠ°Π·ΠΎΠΌ Π·Ρ ΡΡΠΈΡΡΠΎΠΌ. Π ΠΏΡΠ΄ΡΡΠΈΠΌΠΊΠ° ΠΌΠΎΠ² ΠΏΠΎ Π±ΡΠ΄Ρ-ΡΠΊΡΠΉ Π½Π°Π·Π²Ρ (ΠΌΠΎΠΆΠ½Π° Π²ΠΏΠΈΡΠ°ΡΠΈ ΡΡΠΎΠ²ΠΏΡΠΈΠΊ βElvishβ - Ρ ΠΏΠΎ βElvishβ Π·Π²Π΅ΡΡΠ°ΡΠΈΡΡ). Π Π»ΠΈΡΠ΅ ΠΎΠ΄ΠΈΠ½ ScriptableObject ΡΠΊ βΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΈΠΊβ, Π΄ΠΎΡΡΡΠΏΠ½ΠΈΠΉ Π·Π²ΡΠ΄ΡΡΡΠ»Ρ, Π½Π΅ ΠΏΠΎΡΡΡΠ±Π½ΠΎ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ Π· ΠΊΡΠΏΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡΠ².
Π ΠΎΠ·ΡΠΎΠ±Π½ΠΈΠΊ: https://www.octantastudio.com/
Gmail: octantastudio@gmail.com
Discord: https://discord.gg/6SPxKpFZFC
| ΠΠΠΠΠΠΠΠ‘Π’Π | Π¨ΠΠΠΠΠΠ Π‘Π’ΠΠ Π’ | ΠΠΠΠΠΠΠΠ | Π€ΠΠ ΠΠΠ’ CSV | Π¨Π ΠΠ€Π’Π | API | ΠΠΠΠ Π‘Π¦ΠΠΠ | ΠΠ ΠΠΠΠ’ΠΠ | ΠΠΠ¦ΠΠΠΠΠ― | ΠΠΠΠ’Π ΠΠΠΠ |