Merge branch 'develop' into feature/Steam愿望单

This commit is contained in:
2026-07-31 22:44:07 +08:00
9 changed files with 272 additions and 83 deletions
+144
View File
@@ -0,0 +1,144 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using AibisDream.Framework;
using AibisDream.Kit;
using AibisDream.Utility;
using NUnit.Framework;
using UnityEditor;
using UnityEngine;
using YarnProjectDefinition = Yarn.Compiler.Project;
namespace AibisDream.SystemEditor.Tests
{
public sealed class LocalizationExpansionTests
{
private const string FirstRuntimeChapterPath =
"Assets/ScriptableObjects/SceneSO/Demo/Day0_Prologue.asset";
private static readonly string[] AddedLocaleCodes = { "ru", "es", "pt-BR" };
private static readonly MethodInfo GetLocalizedNameMethod =
typeof(CharacterVo).GetMethod(
"GetLocalizedNameByKind",
BindingFlags.Instance | BindingFlags.NonPublic);
[TestCase("ru", LocaleKind.Ru)]
[TestCase("ru-RU", LocaleKind.Ru)]
[TestCase("es", LocaleKind.Es)]
[TestCase("es-ES", LocaleKind.Es)]
[TestCase("pt", LocaleKind.PtBr)]
[TestCase("pt-BR", LocaleKind.PtBr)]
public void GetLocaleKind_AddedLocaleCode_ReturnsExpectedKind(
string localeCode,
LocaleKind expected)
{
Assert.That(LocalizationKit.GetLocaleKind(localeCode), Is.EqualTo(expected));
}
[TestCase(SystemLanguage.Russian, "ru")]
[TestCase(SystemLanguage.Spanish, "es")]
[TestCase(SystemLanguage.Portuguese, "pt-BR")]
public void MapSystemLanguage_AddedSystemLanguage_ReturnsSupportedLocale(
SystemLanguage systemLanguage,
string expected)
{
Assert.That(LocalizationKit.MapSystemLanguage(systemLanguage), Is.EqualTo(expected));
}
[Test]
public void CharacterVo_AddedLocaleName_ReturnsTranslationOrKey()
{
Assert.That(GetLocalizedNameMethod, Is.Not.Null);
var translated = new CharacterVo
{
key = "actor_key",
ru = "Русское имя",
es = "Nombre español",
ptBr = "Nome português",
};
Assert.That(GetLocalizedName(translated, LocaleKind.Ru), Is.EqualTo(translated.ru));
Assert.That(GetLocalizedName(translated, LocaleKind.Es), Is.EqualTo(translated.es));
Assert.That(GetLocalizedName(translated, LocaleKind.PtBr), Is.EqualTo(translated.ptBr));
var untranslated = new CharacterVo { key = "actor_key" };
Assert.That(GetLocalizedName(untranslated, LocaleKind.Ru), Is.EqualTo(untranslated.key));
Assert.That(GetLocalizedName(untranslated, LocaleKind.Es), Is.EqualTo(untranslated.key));
Assert.That(GetLocalizedName(untranslated, LocaleKind.PtBr), Is.EqualTo(untranslated.key));
}
[Test]
public void CharacterCsv_AddedLocaleColumns_ParseSuccessfully()
{
string csvPath = Path.Combine(
Application.streamingAssetsPath,
"Config",
"character.csv");
List<Character> characters = CsvUtil.ReadAsBean<Character>(csvPath);
Assert.That(characters, Is.Not.Empty);
Character peipei = characters.Single(character => character.Key == "peipei");
Assert.That(peipei.Ru, Is.Empty);
Assert.That(peipei.Es, Is.Empty);
Assert.That(peipei.PtBr, Is.Empty);
}
[Test]
public void RuntimeYarnProjects_DeclareAddedLocales()
{
TalkSceneSO firstChapter =
AssetDatabase.LoadAssetAtPath<TalkSceneSO>(FirstRuntimeChapterPath);
Assert.That(firstChapter, Is.Not.Null);
var pending = new Queue<TalkSceneSO>();
var visited = new HashSet<TalkSceneSO>();
pending.Enqueue(firstChapter);
while (pending.Count > 0)
{
TalkSceneSO chapter = pending.Dequeue();
if (chapter == null || !visited.Add(chapter))
continue;
Assert.That(chapter.yarnProject, Is.Not.Null, chapter.name);
AssertYarnProjectDeclaresAddedLocales(chapter);
if (chapter.exits == null)
continue;
foreach (SceneExit sceneExit in chapter.exits)
{
if (sceneExit?.targetScene != null)
pending.Enqueue(sceneExit.targetScene);
}
}
Assert.That(visited, Is.Not.Empty);
}
private static string GetLocalizedName(CharacterVo character, LocaleKind localeKind)
{
return (string)GetLocalizedNameMethod.Invoke(character, new object[] { localeKind });
}
private static void AssertYarnProjectDeclaresAddedLocales(TalkSceneSO chapter)
{
string assetPath = AssetDatabase.GetAssetPath(chapter.yarnProject);
string projectRoot = Directory.GetParent(Application.dataPath).FullName;
string absolutePath = Path.GetFullPath(Path.Combine(projectRoot, assetPath));
YarnProjectDefinition project = YarnProjectDefinition.LoadFromFile(absolutePath);
foreach (string localeCode in AddedLocaleCodes)
{
Assert.That(
project.Localisation.ContainsKey(localeCode),
Is.True,
$"{chapter.name} ({assetPath}) does not declare Locale {localeCode}.");
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7f556352cf7f71c4a98e967b54dffc3b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+16 -1
View File
@@ -8,6 +8,9 @@ namespace AibisDream.Kit
public string Cn { get; set; } public string Cn { get; set; }
public string En { get; set; } public string En { get; set; }
public string Ja { get; set; } public string Ja { get; set; }
public string Ru { get; set; }
public string Es { get; set; }
public string PtBr { get; set; }
public string NameColor { get; set; } public string NameColor { get; set; }
public string HeadPicPath { get; set; } public string HeadPicPath { get; set; }
public string VoicePath { get; set; } public string VoicePath { get; set; }
@@ -26,6 +29,9 @@ namespace AibisDream.Kit
vo.cn = Cn; vo.cn = Cn;
vo.en = En; vo.en = En;
vo.ja = Ja; vo.ja = Ja;
vo.ru = Ru;
vo.es = Es;
vo.ptBr = PtBr;
vo.nameColor = NameColor; vo.nameColor = NameColor;
vo.headPicPath = HeadPicPath; vo.headPicPath = HeadPicPath;
vo.voicePath = VoicePath; vo.voicePath = VoicePath;
@@ -43,6 +49,9 @@ namespace AibisDream.Kit
public string cn; public string cn;
public string en; public string en;
public string ja; public string ja;
public string ru;
public string es;
public string ptBr;
public string nameColor; public string nameColor;
public string headPicPath; public string headPicPath;
public string voicePath; public string voicePath;
@@ -79,6 +88,12 @@ namespace AibisDream.Kit
case LocaleKind.Ja: case LocaleKind.Ja:
if (!string.IsNullOrWhiteSpace(ja)) return ja; if (!string.IsNullOrWhiteSpace(ja)) return ja;
return string.IsNullOrWhiteSpace(cn) ? key : cn; return string.IsNullOrWhiteSpace(cn) ? key : cn;
case LocaleKind.Ru:
return string.IsNullOrWhiteSpace(ru) ? key : ru;
case LocaleKind.Es:
return string.IsNullOrWhiteSpace(es) ? key : es;
case LocaleKind.PtBr:
return string.IsNullOrWhiteSpace(ptBr) ? key : ptBr;
case LocaleKind.Cn: case LocaleKind.Cn:
default: default:
return string.IsNullOrWhiteSpace(cn) ? key : cn; return string.IsNullOrWhiteSpace(cn) ? key : cn;
@@ -105,4 +120,4 @@ namespace AibisDream.Kit
Player, Player,
MainActor MainActor
} }
} }
@@ -18,7 +18,10 @@ namespace AibisDream.Framework
{ {
Cn, Cn,
En, En,
Ja Ja,
Ru,
Es,
PtBr
} }
public static class LocalizationKit public static class LocalizationKit
@@ -34,8 +37,11 @@ namespace AibisDream.Framework
public static LocaleKind GetLocaleKind(string localeCode) public static LocaleKind GetLocaleKind(string localeCode)
{ {
if (string.IsNullOrEmpty(localeCode)) return LocaleKind.Cn; if (string.IsNullOrEmpty(localeCode)) return LocaleKind.Cn;
if (localeCode.StartsWith("en")) return LocaleKind.En; if (localeCode.StartsWith("en", StringComparison.OrdinalIgnoreCase)) return LocaleKind.En;
if (localeCode.StartsWith("ja")) return LocaleKind.Ja; if (localeCode.StartsWith("ja", StringComparison.OrdinalIgnoreCase)) return LocaleKind.Ja;
if (localeCode.StartsWith("ru", StringComparison.OrdinalIgnoreCase)) return LocaleKind.Ru;
if (localeCode.StartsWith("es", StringComparison.OrdinalIgnoreCase)) return LocaleKind.Es;
if (localeCode.StartsWith("pt", StringComparison.OrdinalIgnoreCase)) return LocaleKind.PtBr;
return LocaleKind.Cn; return LocaleKind.Cn;
} }
@@ -62,6 +68,9 @@ namespace AibisDream.Framework
SystemLanguage.Chinese or SystemLanguage.ChineseSimplified or SystemLanguage.ChineseTraditional => "zh-Hans", SystemLanguage.Chinese or SystemLanguage.ChineseSimplified or SystemLanguage.ChineseTraditional => "zh-Hans",
SystemLanguage.Japanese => "ja-JP", SystemLanguage.Japanese => "ja-JP",
SystemLanguage.English => "en", SystemLanguage.English => "en",
SystemLanguage.Russian => "ru",
SystemLanguage.Spanish => "es",
SystemLanguage.Portuguese => "pt-BR",
_ => "en", _ => "en",
}; };
@@ -36,6 +36,9 @@ namespace AibisDream.UI
new UIFormOption { prop = "zh-Hans", label = "中文" }, new UIFormOption { prop = "zh-Hans", label = "中文" },
new UIFormOption { prop = "en", label = "English" }, new UIFormOption { prop = "en", label = "English" },
new UIFormOption { prop = "ja-JP", label = "日本語" }, new UIFormOption { prop = "ja-JP", label = "日本語" },
new UIFormOption { prop = "ru", label = "Русский" },
new UIFormOption { prop = "es", label = "Español" },
new UIFormOption { prop = "pt-BR", label = "Português (Brasil)" },
}; };
private static readonly UIFormOption[] TextSpeedOptions = private static readonly UIFormOption[] TextSpeedOptions =
+76 -76
View File
@@ -1,77 +1,77 @@
通过key索引配置,中文名,英文名,日文名,"显示位置,Default使用默认,Screen插线屏幕,OldBox基本对话框",人物角色(Player/MainActor/Aside,名称显示时的颜色,头像Pic路径,语音资源路径,气泡序号(默认0 通过key索引配置,中文名,英文名,日文名,俄文名,西班牙文名,巴西葡萄牙文名,"显示位置,Default使用默认,Screen插线屏幕,OldBox基本对话框",人物角色(Player/MainActor/Aside,名称显示时的颜色,头像Pic路径,语音资源路径,气泡序号(默认0
Key,Cn,En,Ja,DialogViewType,Role,NameColor,HeadPicPath,VoicePath,BubbleIdx Key,Cn,En,Ja,Ru,Es,PtBr,DialogViewType,Role,NameColor,HeadPicPath,VoicePath,BubbleIdx
jg,警告,Warning,Warning,Default,MainActor,#7ae622,,VO/voice_DN, jg,警告,Warning,Warning,,,,Default,MainActor,#7ae622,,VO/voice_DN,
,,Door,,Default,MainActor,#7ae622,,, ,,Door,,,,,Default,MainActor,#7ae622,,,
矩形,黑暗,Darkness,,Default,MainActor,#7ae622,,VO/voice_DN, 矩形,黑暗,Darkness,,,,,Default,MainActor,#7ae622,,VO/voice_DN,
记忆,记忆,Memory,,Default,MainActor,#7ae622,,, 记忆,记忆,Memory,,,,,Default,MainActor,#7ae622,,,
peipei,佩佩,Peipei,ペイペイ,Default,MainActor,#00FFFF,peipei_head,VO/voice_PP, peipei,佩佩,Peipei,ペイペイ,,,,Default,MainActor,#00FFFF,peipei_head,VO/voice_PP,
乌鸦,乌鸦,Crow,,Default,MainActor,#e6ddc1,,VO/voice_WYd, 乌鸦,乌鸦,Crow,,,,,Default,MainActor,#e6ddc1,,VO/voice_WYd,
wyd?,???,???,???,Default,MainActor,#e6ddc1,,VO/voice_WYd, wyd?,???,???,???,,,,Default,MainActor,#e6ddc1,,VO/voice_WYd,
马尾辫女孩,马尾辫女孩,Girl with ponytail,,Default,MainActor,,,VO/voice_JJ, 马尾辫女孩,马尾辫女孩,Girl with ponytail,,,,,Default,MainActor,,,VO/voice_JJ,
pp,佩佩,Peipei,ペイペイ,Default,MainActor,#00FFFF,peipei_head,VO/voice_PP, pp,佩佩,Peipei,ペイペイ,,,,Default,MainActor,#00FFFF,peipei_head,VO/voice_PP,
ppm,佩佩,Peipei,ペイペイ,Default,MainActor,#00FFFF,peipei_head,VO/voice_PPm, ppm,佩佩,Peipei,ペイペイ,,,,Default,MainActor,#00FFFF,peipei_head,VO/voice_PPm,
ppd,女孩,Girl,,Default,MainActor,,,VO/voice_PPd, ppd,女孩,Girl,,,,,Default,MainActor,,,VO/voice_PPd,
ppd?,女孩,Girl,,Default,MainActor,,,VO/voice_PPd, ppd?,女孩,Girl,,,,,Default,MainActor,,,VO/voice_PPd,
me,路斯,Luth,ルース,Default,Player,,me_head,VO/voice_ME, me,路斯,Luth,ルース,,,,Default,Player,,me_head,VO/voice_ME,
med,路斯,Luth,ルース,Default,Player,,me_head,VO/voice_MEd, med,路斯,Luth,ルース,,,,Default,Player,,me_head,VO/voice_MEd,
mem,路斯,Luth,ルース,Default,Player,,me_head,VO/voice_MEm, mem,路斯,Luth,ルース,,,,Default,Player,,me_head,VO/voice_MEm,
mecd,女孩,Young Girl,少女,Default,MainActor,,,VO/voice_MECd, mecd,女孩,Young Girl,少女,,,,Default,MainActor,,,VO/voice_MECd,
mecd?,???,???,???,Default,MainActor,,,VO/voice_MECd, mecd?,???,???,???,,,,Default,MainActor,,,VO/voice_MECd,
bb,BB机,Beeper,,Default,Player,,me_head,, bb,BB机,Beeper,,,,,Default,Player,,me_head,,
jj,姐姐,Sister,姉さん,Default,MainActor,,me_head,VO/voice_JJ, jj,姐姐,Sister,姉さん,,,,Default,MainActor,,me_head,VO/voice_JJ,
jjd,姐姐,Sister,姉さん,Default,MainActor,,me_head,VO/voice_JJd, jjd,姐姐,Sister,姉さん,,,,Default,MainActor,,me_head,VO/voice_JJd,
jjm,姐姐,Sister,姉さん,Default,MainActor,,me_head,VO/voice_JJm, jjm,姐姐,Sister,姉さん,,,,Default,MainActor,,me_head,VO/voice_JJm,
jj?,柔和女声,???,???,Default,MainActor,,me_head,VO/voice_JJ, jj?,柔和女声,???,???,,,,Default,MainActor,,me_head,VO/voice_JJ,
hs,火山,HuoShan,火山,Default,MainActor,#FFA800,peipei_head,VO/voice_HS, hs,火山,HuoShan,火山,,,,Default,MainActor,#FFA800,peipei_head,VO/voice_HS,
hs?,沙哑男声,???,???,Default,MainActor,#FFA800,peipei_head,VO/voice_HS, hs?,沙哑男声,???,???,,,,Default,MainActor,#FFA800,peipei_head,VO/voice_HS,
hsm,火山,HuoShan,火山,Default,MainActor,,,VO/voice_HSm, hsm,火山,HuoShan,火山,,,,Default,MainActor,,,VO/voice_HSm,
hsd,阿灿,Young Boy,少年,Default,MainActor,,,VO/voice_HSd, hsd,阿灿,Young Boy,少年,,,,Default,MainActor,,,VO/voice_HSd,
hsd?,???,???,???,Default,MainActor,#FFA800,peipei_head,VO/voice_HSd, hsd?,???,???,???,,,,Default,MainActor,#FFA800,peipei_head,VO/voice_HSd,
yl,英理,Yingli,エリ,Default,MainActor,#4000FF,peipei_head,VO/voice_YL, yl,英理,Yingli,エリ,,,,Default,MainActor,#4000FF,peipei_head,VO/voice_YL,
ql?,02号调酒机体,Bartender,,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL, ql?,02号调酒机体,Bartender,,,,,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL,
ql,奇琳,Kirin,チーリン,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL, ql,奇琳,Kirin,チーリン,,,,Default,MainActor,#00FFFF,peipei_head,VO/voice_YL,
peipei_novoice,胆怯女声,Timid female voice,怯えた女声,Default,Aside,#00FFFF,,VO/voice_PP,2 peipei_novoice,胆怯女声,Timid female voice,怯えた女声,,,,Default,Aside,#00FFFF,,VO/voice_PP,2
yingli_novoice,严厉女声,Stern female voice,厳しい女声,Default,Aside,#FFCC00,,VO/voice_YL,1 yingli_novoice,严厉女声,Stern female voice,厳しい女声,,,,Default,Aside,#FFCC00,,VO/voice_YL,1
tutorial,教学,Tutorial,,Default,Aside,,,, tutorial,教学,Tutorial,,,,,Default,Aside,,,,
docter,儿科医生,Doctor (in memory),医者(記憶の中),Default,Aside,#FFCC00,,, docter,儿科医生,Doctor (in memory),医者(記憶の中),,,,Default,Aside,#FFCC00,,,
peipei_child,童年佩佩,Peipei (child),ペイペイ(幼少期),Default,Aside,#00FFFF,,VO/voice_PPm, peipei_child,童年佩佩,Peipei (child),ペイペイ(幼少期),,,,Default,Aside,#00FFFF,,VO/voice_PPm,
unknown,???,???,???,Default,Aside,#FFCC00,,, unknown,???,???,???,,,,Default,Aside,#FFCC00,,,
???,???,???,???,Default,MainActor,#FFCC00,,, ???,???,???,???,,,,Default,MainActor,#FFCC00,,,
zls?,???,???,???,Default,MainActor,#FFCC00,,VO/voice_memCommon, zls?,???,???,???,,,,Default,MainActor,#FFCC00,,VO/voice_memCommon,
zls,治疗师,Therapist,セラピスト,Default,MainActor,#FFCC00,,VO/voice_memCommon, zls,治疗师,Therapist,セラピスト,,,,Default,MainActor,#FFCC00,,VO/voice_memCommon,
shitou,石头,Stone,シートウ,Default,MainActor,,,VO/voice_shitou, shitou,石头,Stone,シートウ,,,,Default,MainActor,,,VO/voice_shitou,
Descent,Descent,Descent,,Default,Aside,#FFCC00,,VO/voice_me, Descent,Descent,Descent,,,,,Default,Aside,#FFCC00,,VO/voice_me,
e-assistant,电子助手,Electronic Assistant,,Default,Aside,#FFCC00,,VO/voice_me, e-assistant,电子助手,Electronic Assistant,,,,,Default,Aside,#FFCC00,,VO/voice_me,
Gotashi_unknow,戴纯金雕塑头的男人,*Gotash,*ゴタシュ,Default,Aside,#FFCC00,,, Gotashi_unknow,戴纯金雕塑头的男人,*Gotash,*ゴタシュ,,,,Default,Aside,#FFCC00,,,
dn,无连接,No Connection,No Connection,Screen,Aside,#FFBF5F,,VO/voice_DN, dn,无连接,No Connection,No Connection,,,,Screen,Aside,#FFBF5F,,VO/voice_DN,
Linking,连接中……,Connecting...,Connecting...,Screen,Aside,#E6A23C,,VO/voice_DN, Linking,连接中……,Connecting...,Connecting...,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
Analysing,分析中,Analyzing...,Analyzing...,Screen,Aside,#E6A23C,,VO/voice_DN, Analysing,分析中,Analyzing...,Analyzing...,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
Error,错误警告,Error warning,Error warning,Screen,Aside,#E6A23C,,VO/voice_DN, Error,错误警告,Error warning,Error warning,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
UfModule,Unstable Fusion图像生成模块,Unstable Fusion Module,Unstable Fusion Module,Screen,Aside,#F56C6C,,VO/voice_DN, UfModule,Unstable Fusion图像生成模块,Unstable Fusion Module,Unstable Fusion Module,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
EyeModule,HS9型视觉模块,HS9 Visual Module,HS9 Visual Module,Screen,Aside,#F56C6C,,VO/voice_DN, EyeModule,HS9型视觉模块,HS9 Visual Module,HS9 Visual Module,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
EmoModule,通用型情绪发生模块,Universal Emotion Generation Module,Universal Emotion Generation Module,Screen,Aside,#F56C6C,,VO/voice_DN, EmoModule,通用型情绪发生模块,Universal Emotion Generation Module,Universal Emotion Generation Module,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
MemModule,通用型记忆模块,Universal Memory Module,Universal Memory Module,Screen,Aside,#F56C6C,,VO/voice_DN, MemModule,通用型记忆模块,Universal Memory Module,Universal Memory Module,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
LogicModule,MK1型逻辑处理模块,MK1 logic Processing Module,MK1 logic Processing Module,Screen,Aside,#F56C6C,,VO/voice_DN, LogicModule,MK1型逻辑处理模块,MK1 logic Processing Module,MK1 logic Processing Module,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
SpeakerModule,MK1型表达模块,MK1 Expression Module,MK1 Expression Module,Screen,Aside,#F56C6C,,VO/voice_DN, SpeakerModule,MK1型表达模块,MK1 Expression Module,MK1 Expression Module,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
SaleModule,销售语言拓展模块,Sales Language Extension Module,販売言語拡張モジュール,Screen,Aside,#F56C6C,,VO/voice_DN, SaleModule,销售语言拓展模块,Sales Language Extension Module,販売言語拡張モジュール,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
ChipModule,4R7型色觉晶圆训练槽,4R7 Color Perception Wafer Training Slot,4R7 Color Perception Wafer Training Slot,Screen,Aside,#F56C6C,,VO/voice_DN, ChipModule,4R7型色觉晶圆训练槽,4R7 Color Perception Wafer Training Slot,4R7 Color Perception Wafer Training Slot,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
HivemindModule,未知型号<br>Hivemind通讯终端,Unknown type Hivemind communication terminal,Unknown type Hivemind communication terminal,Screen,Aside,#F56C6C,,VO/voice_DN, HivemindModule,未知型号<br>Hivemind通讯终端,Unknown type Hivemind communication terminal,Unknown type Hivemind communication terminal,,,,Screen,Aside,#F56C6C,,VO/voice_DN,
HeartModule,C03UR型特配涡轮增压动力模块,C03UR Special Turbocharged Power Module,C03UR Special Turbocharged Power Module,Screen,Aside,#E6A23C,,VO/voice_DN, HeartModule,C03UR型特配涡轮增压动力模块,C03UR Special Turbocharged Power Module,C03UR Special Turbocharged Power Module,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
LungModule,MK1型气体处理模块,MK1 Gas Processing Module,MK1 Gas Processing Module,Screen,Aside,#E6A23C,,VO/voice_DN, LungModule,MK1型气体处理模块,MK1 Gas Processing Module,MK1 Gas Processing Module,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
LiverModule,MK1型冷却液循环模块,MK1 Coolant Circulation Module,MK1 Coolant Circulation Module,Screen,Aside,#E6A23C,,VO/voice_DN, LiverModule,MK1型冷却液循环模块,MK1 Coolant Circulation Module,MK1 Coolant Circulation Module,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
DigestModule,MK1型物料处理模块,MK1 Material Processing Module,MK1 Material Processing Module,Screen,Aside,#E6A23C,,VO/voice_DN, DigestModule,MK1型物料处理模块,MK1 Material Processing Module,MK1 Material Processing Module,,,,Screen,Aside,#E6A23C,,VO/voice_DN,
CenterText,,,,CenterText,Aside,,,, CenterText,,,,,,,CenterText,Aside,,,,
CenterOption,,,,CenterOption,Aside,,,, CenterOption,,,,,,,CenterOption,Aside,,,,
Task,,,,Task,Aside,,,, Task,,,,,,,Task,Aside,,,,
TempText,,,,Default,Aside,,,, TempText,,,,,,,Default,Aside,,,,
gts,患者,???,???,Default,MainActor,#A4CD36,,VO/voice_GTS, gts,患者,???,???,,,,Default,MainActor,#A4CD36,,VO/voice_GTS,
gts?,患者,???,???,Default,MainActor,#A4CD36,,VO/voice_GTS_broken, gts?,患者,???,???,,,,Default,MainActor,#A4CD36,,VO/voice_GTS_broken,
gts??,患者??,???,???,Default,MainActor,#E2C22B,,VO/voice_GTS, gts??,患者??,???,???,,,,Default,MainActor,#E2C22B,,VO/voice_GTS,
classmate,同学,Classmate,クラスメート,Default,Aside,,,VO/voice_memCommon, classmate,同学,Classmate,クラスメート,,,,Default,Aside,,,VO/voice_memCommon,
jb,酒保,Bartender,バーテンダー,Default,MainActor,,,VO/voice_memCommon, jb,酒保,Bartender,バーテンダー,,,,Default,MainActor,,,VO/voice_memCommon,
host,主持人,Newscaster,ニュースキャスター,Default,MainActor,,,VO/voice_memCommon, host,主持人,Newscaster,ニュースキャスター,,,,Default,MainActor,,,VO/voice_memCommon,
teacher,教师,Teacher,Teacher,Default,MainActor,#FFCC00,,VO/voice_memCommon, teacher,教师,Teacher,Teacher,,,,Default,MainActor,#FFCC00,,VO/voice_memCommon,
sellerA,销售员A,Seller A,Seller A,Default,MainActor,#FFCC00,,VO/voice_memCommon, sellerA,销售员A,Seller A,Seller A,,,,Default,MainActor,#FFCC00,,VO/voice_memCommon,
sellerB,销售员B,Seller B,Seller B,Default,MainActor,#FFCC00,,VO/voice_memCommon, sellerB,销售员B,Seller B,Seller B,,,,Default,MainActor,#FFCC00,,VO/voice_memCommon,
sellerC,销售员C,Seller C,Seller C,Default,MainActor,#FFCC00,,VO/voice_memCommon, sellerC,销售员C,Seller C,Seller C,,,,Default,MainActor,#FFCC00,,VO/voice_memCommon,
1 通过key索引配置 中文名 英文名 日文名 俄文名 西班牙文名 巴西葡萄牙文名 显示位置,Default使用默认,Screen插线屏幕,OldBox基本对话框 人物角色(Player/MainActor/Aside) 名称显示时的颜色 头像Pic路径 语音资源路径 气泡序号(默认0)
2 Key Cn En Ja Ru Es PtBr DialogViewType Role NameColor HeadPicPath VoicePath BubbleIdx
3 jg 警告 Warning Warning Default MainActor #7ae622 VO/voice_DN
4 Door Default MainActor #7ae622
5 矩形 黑暗 Darkness Default MainActor #7ae622 VO/voice_DN
6 记忆 记忆 Memory Default MainActor #7ae622
7 peipei 佩佩 Peipei ペイペイ Default MainActor #00FFFF peipei_head VO/voice_PP
8 乌鸦 乌鸦 Crow Default MainActor #e6ddc1 VO/voice_WYd
9 wyd? ??? ??? ??? Default MainActor #e6ddc1 VO/voice_WYd
10 马尾辫女孩 马尾辫女孩 Girl with ponytail Default MainActor VO/voice_JJ
11 pp 佩佩 Peipei ペイペイ Default MainActor #00FFFF peipei_head VO/voice_PP
12 ppm 佩佩 Peipei ペイペイ Default MainActor #00FFFF peipei_head VO/voice_PPm
13 ppd 女孩 Girl Default MainActor VO/voice_PPd
14 ppd? 女孩 Girl Default MainActor VO/voice_PPd
15 me 路斯 Luth ルース Default Player me_head VO/voice_ME
16 med 路斯 Luth ルース Default Player me_head VO/voice_MEd
17 mem 路斯 Luth ルース Default Player me_head VO/voice_MEm
18 mecd 女孩 Young Girl 少女 Default MainActor VO/voice_MECd
19 mecd? ??? ??? ??? Default MainActor VO/voice_MECd
20 bb BB机 Beeper Default Player me_head
21 jj 姐姐 Sister 姉さん Default MainActor me_head VO/voice_JJ
22 jjd 姐姐 Sister 姉さん Default MainActor me_head VO/voice_JJd
23 jjm 姐姐 Sister 姉さん Default MainActor me_head VO/voice_JJm
24 jj? 柔和女声 ??? ??? Default MainActor me_head VO/voice_JJ
25 hs 火山 HuoShan 火山 Default MainActor #FFA800 peipei_head VO/voice_HS
26 hs? 沙哑男声 ??? ??? Default MainActor #FFA800 peipei_head VO/voice_HS
27 hsm 火山 HuoShan 火山 Default MainActor VO/voice_HSm
28 hsd 阿灿 Young Boy 少年 Default MainActor VO/voice_HSd
29 hsd? ??? ??? ??? Default MainActor #FFA800 peipei_head VO/voice_HSd
30 yl 英理 Yingli エリ Default MainActor #4000FF peipei_head VO/voice_YL
31 ql? 02号调酒机体 Bartender Default MainActor #00FFFF peipei_head VO/voice_YL
32 ql 奇琳 Kirin チーリン Default MainActor #00FFFF peipei_head VO/voice_YL
33 peipei_novoice 胆怯女声 Timid female voice 怯えた女声 Default Aside #00FFFF VO/voice_PP 2
34 yingli_novoice 严厉女声 Stern female voice 厳しい女声 Default Aside #FFCC00 VO/voice_YL 1
35 tutorial 教学 Tutorial Default Aside
36 docter 儿科医生 Doctor (in memory) 医者(記憶の中) Default Aside #FFCC00
37 peipei_child 童年佩佩 Peipei (child) ペイペイ(幼少期) Default Aside #00FFFF VO/voice_PPm
38 unknown ??? ??? ??? Default Aside #FFCC00
39 ??? ??? ??? ??? Default MainActor #FFCC00
40 zls? ??? ??? ??? Default MainActor #FFCC00 VO/voice_memCommon
41 zls 治疗师 Therapist セラピスト Default MainActor #FFCC00 VO/voice_memCommon
42 shitou 石头 Stone シートウ Default MainActor VO/voice_shitou
43 Descent Descent Descent Default Aside #FFCC00 VO/voice_me
44 e-assistant 电子助手 Electronic Assistant Default Aside #FFCC00 VO/voice_me
45 Gotashi_unknow 戴纯金雕塑头的男人 *Gotash *ゴタシュ Default Aside #FFCC00
46 dn 无连接 No Connection No Connection Screen Aside #FFBF5F VO/voice_DN
47 Linking 连接中…… Connecting... Connecting... Screen Aside #E6A23C VO/voice_DN
48 Analysing 分析中 Analyzing... Analyzing... Screen Aside #E6A23C VO/voice_DN
49 Error 错误警告 Error warning Error warning Screen Aside #E6A23C VO/voice_DN
50 UfModule Unstable Fusion图像生成模块 Unstable Fusion Module Unstable Fusion Module Screen Aside #F56C6C VO/voice_DN
51 EyeModule HS9型视觉模块 HS9 Visual Module HS9 Visual Module Screen Aside #F56C6C VO/voice_DN
52 EmoModule 通用型情绪发生模块 Universal Emotion Generation Module Universal Emotion Generation Module Screen Aside #F56C6C VO/voice_DN
53 MemModule 通用型记忆模块 Universal Memory Module Universal Memory Module Screen Aside #F56C6C VO/voice_DN
54 LogicModule MK1型逻辑处理模块 MK1 logic Processing Module MK1 logic Processing Module Screen Aside #F56C6C VO/voice_DN
55 SpeakerModule MK1型表达模块 MK1 Expression Module MK1 Expression Module Screen Aside #F56C6C VO/voice_DN
56 SaleModule 销售语言拓展模块 Sales Language Extension Module 販売言語拡張モジュール Screen Aside #F56C6C VO/voice_DN
57 ChipModule 4R7型色觉晶圆训练槽 4R7 Color Perception Wafer Training Slot 4R7 Color Perception Wafer Training Slot Screen Aside #F56C6C VO/voice_DN
58 HivemindModule 未知型号<br>Hivemind通讯终端 Unknown type Hivemind communication terminal Unknown type Hivemind communication terminal Screen Aside #F56C6C VO/voice_DN
59 HeartModule C03UR型特配涡轮增压动力模块 C03UR Special Turbocharged Power Module C03UR Special Turbocharged Power Module Screen Aside #E6A23C VO/voice_DN
60 LungModule MK1型气体处理模块 MK1 Gas Processing Module MK1 Gas Processing Module Screen Aside #E6A23C VO/voice_DN
61 LiverModule MK1型冷却液循环模块 MK1 Coolant Circulation Module MK1 Coolant Circulation Module Screen Aside #E6A23C VO/voice_DN
62 DigestModule MK1型物料处理模块 MK1 Material Processing Module MK1 Material Processing Module Screen Aside #E6A23C VO/voice_DN
63 CenterText CenterText Aside
64 CenterOption CenterOption Aside
65 Task Task Aside
66 TempText Default Aside
67 gts 患者 ??? ??? Default MainActor #A4CD36 VO/voice_GTS
68 gts? 患者 ??? ??? Default MainActor #A4CD36 VO/voice_GTS_broken
69 gts?? 患者?? ??? ??? Default MainActor #E2C22B VO/voice_GTS
70 classmate 同学 Classmate クラスメート Default Aside VO/voice_memCommon
71 jb 酒保 Bartender バーテンダー Default MainActor VO/voice_memCommon
72 host 主持人 Newscaster ニュースキャスター Default MainActor VO/voice_memCommon
73 teacher 教师 Teacher Teacher Default MainActor #FFCC00 VO/voice_memCommon
74 sellerA 销售员A Seller A Seller A Default MainActor #FFCC00 VO/voice_memCommon
75 sellerB 销售员B Seller B Seller B Default MainActor #FFCC00 VO/voice_memCommon
76 sellerC 销售员C Seller C Seller C Default MainActor #FFCC00 VO/voice_memCommon
77
@@ -129,6 +129,7 @@ position: -116,-2585
<<jump 走廊>> <<jump 走廊>>
->观察 #line:0c9209f ->观察 #line:0c9209f
<<detour 教室_Insp>> <<detour 教室_Insp>>
<<jump 教室>>
->趴回去再睡会 #line:0028a19 ->趴回去再睡会 #line:0028a19
<<detour 趴回去再睡会>> <<detour 趴回去再睡会>>
<<jump 教室>> <<jump 教室>>
@@ -6,7 +6,13 @@
"excludeFiles": [ "excludeFiles": [
"**/*~/*" "**/*~/*"
], ],
"localisation": {}, "localisation": {
"en": {},
"ja-JP": {},
"ru": {},
"es": {},
"pt-BR": {}
},
"baseLanguage": "zh-Hans", "baseLanguage": "zh-Hans",
"compilerOptions": {} "compilerOptions": {}
} }
+1 -1
View File
@@ -133,7 +133,7 @@ PlayerSettings:
vulkanEnableLateAcquireNextImage: 0 vulkanEnableLateAcquireNextImage: 0
vulkanEnableCommandBufferRecycling: 1 vulkanEnableCommandBufferRecycling: 1
loadStoreDebugModeEnabled: 0 loadStoreDebugModeEnabled: 0
bundleVersion: 0.6.1.15-20260730-005754 bundleVersion: 0.6.1.16-20260731-152037
preloadedAssets: preloadedAssets:
- {fileID: 11400000, guid: 0fb2bc2476953fc43a74f0ab8879077c, type: 2} - {fileID: 11400000, guid: 0fb2bc2476953fc43a74f0ab8879077c, type: 2}
metroInputSource: 0 metroInputSource: 0