From 61fb8820a39c2ffdcdb6959e6da95c56ed589887 Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Wed, 29 Jul 2026 15:57:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A2=A6=E5=A2=83dos=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Language/Params/Params Shared Data.asset | 32 +++++++++++++++++ Assets/Language/Params/Params_en.asset | 32 +++++++++++++++++ Assets/Language/Params/Params_ja-JP.asset | 32 +++++++++++++++++ Assets/Language/Params/Params_zh-Hans.asset | 32 +++++++++++++++++ Assets/Scenes/梦境.unity | 25 ------------- .../Scripts/UI/Components/DreamTerminalUI.cs | 35 ++++++++++++------- 6 files changed, 150 insertions(+), 38 deletions(-) diff --git a/Assets/Language/Params/Params Shared Data.asset b/Assets/Language/Params/Params Shared Data.asset index 1100a2da7..bfce594c1 100644 --- a/Assets/Language/Params/Params Shared Data.asset +++ b/Assets/Language/Params/Params Shared Data.asset @@ -155,6 +155,38 @@ MonoBehaviour: m_Key: hs.exp.pool m_Metadata: m_Items: [] + - m_Id: 200000000000001030 + m_Key: dream.terminal.boot.01 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001031 + m_Key: dream.terminal.boot.02 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001032 + m_Key: dream.terminal.boot.03 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001033 + m_Key: dream.terminal.boot.04 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001034 + m_Key: dream.terminal.boot.05 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001035 + m_Key: dream.terminal.boot.06 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001036 + m_Key: dream.terminal.boot.07 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001037 + m_Key: dream.terminal.boot.08 + m_Metadata: + m_Items: [] m_Metadata: m_Items: [] m_KeyGenerator: diff --git a/Assets/Language/Params/Params_en.asset b/Assets/Language/Params/Params_en.asset index 7301e889e..44c1babea 100644 --- a/Assets/Language/Params/Params_en.asset +++ b/Assets/Language/Params/Params_en.asset @@ -158,6 +158,38 @@ MonoBehaviour: m_Localized: the a an and or but if then because I me my mine you your yours we our us they their them he his him she her it its this that these those who what where when why how is am are was were be been being do does did done can could will would shall should may might must have has had not no yes never always sometimes again still already just only even very really too so more most less least all any some none one two first last next now here there inside outside above below before after back away near far good bad right wrong true false real fake funny joke laugh smile cry fear trust doubt hope courage voice word words say tell ask answer explain believe leave stay come go follow catch help hold let make try fail win lose break fix remember forget think know feel want need like hate love angry tired lonely useless enough nothing everything someone nobody friend weather today tomorrow yesterday time world dream truth lie problem reason choice change begin end open close light dark red blue green warm cold quiet loud slow fast strong weak safe danger together apart broken whole m_Metadata: m_Items: [] + - m_Id: 200000000000001030 + m_Localized: root@sys:~$ dream.render --stop --session 0742 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001031 + m_Localized: '[ OK ] Dream renderer stopped.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001032 + m_Localized: '[ RAW ] Untitled_Greybox_0 exposed.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001033 + m_Localized: root@sys:~$ trace --tail /log/dream_0742.rec + m_Metadata: + m_Items: [] + - m_Id: 200000000000001034 + m_Localized: '[0005] audio.play("sea_ambient", source=door.rear)' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001035 + m_Localized: '[0006] memory.project("glass_sea")' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001036 + m_Localized: '[ WARN ] memory source unresolved; overflow detected.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001037 + m_Localized: 'root@sys:~$ print_string("Does the sea exist?")' + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Language/Params/Params_ja-JP.asset b/Assets/Language/Params/Params_ja-JP.asset index f95e06640..af1b38966 100644 --- a/Assets/Language/Params/Params_ja-JP.asset +++ b/Assets/Language/Params/Params_ja-JP.asset @@ -158,6 +158,38 @@ MonoBehaviour: m_Localized: m_Metadata: m_Items: [] + - m_Id: 200000000000001030 + m_Localized: root@sys:~$ dream.render --stop --session 0742 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001031 + m_Localized: '[ OK ] Dream renderer stopped.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001032 + m_Localized: '[ RAW ] Untitled_Greybox_0 exposed.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001033 + m_Localized: root@sys:~$ trace --tail /log/dream_0742.rec + m_Metadata: + m_Items: [] + - m_Id: 200000000000001034 + m_Localized: '[0005] audio.play("sea_ambient", source=door.rear)' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001035 + m_Localized: '[0006] memory.project("glass_sea")' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001036 + m_Localized: '[ WARN ] \u30E1\u30E2\u30EA\u30BD\u30FC\u30B9\u672A\u89E3\u6C7A\uFF1B\u30AA\u30FC\u30D0\u30FC\u30D5\u30ED\u30FC\u691C\u51FA\u3002' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001037 + m_Localized: "root@sys:~$ print_string(\"\u6D77\u306F\u5B58\u5728\u3059\u308B\u306E\u304B?\")" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Language/Params/Params_zh-Hans.asset b/Assets/Language/Params/Params_zh-Hans.asset index 7b31cbd11..d7bfc3012 100644 --- a/Assets/Language/Params/Params_zh-Hans.asset +++ b/Assets/Language/Params/Params_zh-Hans.asset @@ -158,6 +158,38 @@ MonoBehaviour: m_Localized: 的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞 m_Metadata: m_Items: [] + - m_Id: 200000000000001030 + m_Localized: root@sys:~$ dream.render --stop --session 0742 + m_Metadata: + m_Items: [] + - m_Id: 200000000000001031 + m_Localized: '[ OK ] Dream renderer stopped.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001032 + m_Localized: '[ RAW ] Untitled_Greybox_0 exposed.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001033 + m_Localized: root@sys:~$ trace --tail /log/dream_0742.rec + m_Metadata: + m_Items: [] + - m_Id: 200000000000001034 + m_Localized: '[0005] audio.play("sea_ambient", source=door.rear)' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001035 + m_Localized: '[0006] memory.project("glass_sea")' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001036 + m_Localized: '[ WARN ] memory source unresolved; overflow detected.' + m_Metadata: + m_Items: [] + - m_Id: 200000000000001037 + m_Localized: "root@sys:~$ print_string(\"\u6D77\u662F\u5B58\u5728\u7684\u5417?\")" + m_Metadata: + m_Items: [] references: version: 2 RefIds: [] diff --git a/Assets/Scenes/梦境.unity b/Assets/Scenes/梦境.unity index 56732bda5..7415c3207 100644 --- a/Assets/Scenes/梦境.unity +++ b/Assets/Scenes/梦境.unity @@ -1586,31 +1586,6 @@ MonoBehaviour: onCompleteNode: "\u82CF\u9192" typewriterCharDelay: 0.025 bootSpeedMultiplier: 20 - bootSequence: - - text: root@sys:~$ dream.render --stop --session 0742 - style: 3 - delayAfter: 0.15 - - text: '[ OK ] Dream renderer stopped.' - style: 0 - delayAfter: 0.25 - - text: '[ RAW ] Untitled_Greybox_0 exposed.' - style: 0 - delayAfter: 0.35 - - text: root@sys:~$ trace --tail /log/dream_0742.rec - style: 3 - delayAfter: 0.15 - - text: '[0005] audio.play("sea_ambient", source=door.rear)' - style: 3 - delayAfter: 0.1 - - text: '[0006] memory.project("glass_sea")' - style: 3 - delayAfter: 0.1 - - text: '[ WARN ] memory source unresolved; overflow detected.' - style: 1 - delayAfter: 0.4 - - text: "root@sys:~$ print_string(\"\u6D77\u662F\u5B58\u5728\u7684\u5417?\")" - style: 2 - delayAfter: 0.5 --- !u!224 &1195418929 RectTransform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/UI/Components/DreamTerminalUI.cs b/Assets/Scripts/UI/Components/DreamTerminalUI.cs index a2a39ed77..dc5d1e046 100644 --- a/Assets/Scripts/UI/Components/DreamTerminalUI.cs +++ b/Assets/Scripts/UI/Components/DreamTerminalUI.cs @@ -1,9 +1,11 @@ using System; using System.Collections; using System.Collections.Generic; +using AibisDream.Framework; using Shapes; using TMPro; using UnityEngine; +using UnityEngine.Localization.Settings; using UnityEngine.Rendering; #if UNITY_EDITOR using UnityEditor; @@ -96,17 +98,20 @@ namespace AibisDream.UI [Range(0.25f, 4f)] [SerializeField] private float bootSpeedMultiplier = 1f; - [Header("启动日志")] - [SerializeField] private List bootSequence = new() + #endregion + + #region 启动日志(硬编码,文案见 Params 表 dream.terminal.boot.*) + + private static readonly BootLogEntry[] BootSequence = { - new BootLogEntry { text = "root@sys:~$ dream.render --stop --session 0742", style = LogStyle.Dim, delayAfter = 0.15f }, - new BootLogEntry { text = "[ OK ] Dream renderer stopped.", style = LogStyle.Normal, delayAfter = 0.25f }, - new BootLogEntry { text = "[ RAW ] Untitled_Greybox_0 exposed.", style = LogStyle.Normal, delayAfter = 0.35f }, - new BootLogEntry { text = "root@sys:~$ trace --tail /log/dream_0742.rec", style = LogStyle.Dim, delayAfter = 0.15f }, - new BootLogEntry { text = "[0005] audio.play(\"sea_ambient\", source=door.rear)", style = LogStyle.Dim, delayAfter = 0.1f }, - new BootLogEntry { text = "[0006] memory.project(\"glass_sea\")", style = LogStyle.Dim, delayAfter = 0.1f }, - new BootLogEntry { text = "[ WARN ] memory source unresolved; overflow detected.", style = LogStyle.Alert, delayAfter = 0.4f }, - new BootLogEntry { text = "root@sys:~$ print_string(\"海是存在的吗?\")", style = LogStyle.Highlight, delayAfter = 0.5f }, + new() { textKey = "l10n.dream.terminal.boot.01", style = LogStyle.Dim, delayAfter = 0.15f }, + new() { textKey = "l10n.dream.terminal.boot.02", style = LogStyle.Normal, delayAfter = 0.25f }, + new() { textKey = "l10n.dream.terminal.boot.03", style = LogStyle.Normal, delayAfter = 0.35f }, + new() { textKey = "l10n.dream.terminal.boot.04", style = LogStyle.Dim, delayAfter = 0.15f }, + new() { textKey = "l10n.dream.terminal.boot.05", style = LogStyle.Dim, delayAfter = 0.10f }, + new() { textKey = "l10n.dream.terminal.boot.06", style = LogStyle.Dim, delayAfter = 0.10f }, + new() { textKey = "l10n.dream.terminal.boot.07", style = LogStyle.Alert, delayAfter = 0.40f }, + new() { textKey = "l10n.dream.terminal.boot.08", style = LogStyle.Highlight, delayAfter = 0.50f }, }; #endregion @@ -752,13 +757,17 @@ namespace AibisDream.UI { _phase = TerminalPhase.BootSequence; float speed = Mathf.Max(0.25f, bootSpeedMultiplier); + yield return LocalizationSettings.InitializationOperation; yield return new WaitForSeconds(0.3f / speed); - foreach (var entry in bootSequence) + foreach (var entry in BootSequence) { + string line = null; + yield return LocalizationKit.LocalizeParam(entry.textKey, null, s => line = s); + Color c = StyleToColor(entry.style); float charDelay = typewriterCharDelay / speed; - _typewriterCoroutine = StartCoroutine(TypewriterLine(entry.text, c, charDelay)); + _typewriterCoroutine = StartCoroutine(TypewriterLine(line, c, charDelay)); yield return WaitForTypewriter(); if (entry.delayAfter > 0f) @@ -959,7 +968,7 @@ namespace AibisDream.UI [Serializable] public class BootLogEntry { - public string text; + public string textKey; public LogStyle style; public float delayAfter; }