From 8c9d360434cd5d722941e176826949ffee5ae66f Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Mon, 9 Mar 2026 16:37:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4Dream=E7=BB=88=E7=AB=AFtypewr?= =?UTF-8?q?iter=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/Yarn/Test_Huoshan/Stage8.yarn | 4 +- Assets/Scenes/梦境.unity | 73 +------------------ .../Scripts/UI/Components/DreamTerminalUI.cs | 20 +++-- 3 files changed, 20 insertions(+), 77 deletions(-) diff --git a/Assets/Resources/Yarn/Test_Huoshan/Stage8.yarn b/Assets/Resources/Yarn/Test_Huoshan/Stage8.yarn index 9c37e20d8..4b135ab50 100644 --- a/Assets/Resources/Yarn/Test_Huoshan/Stage8.yarn +++ b/Assets/Resources/Yarn/Test_Huoshan/Stage8.yarn @@ -19,8 +19,8 @@ colorID: 2 position: 500,3150 --- -hs: 都是因为我……都怪我…… #line:0d554c0 -hs: 如果不是我这么没用,她就不用…… #line:0d2443f +hs: 都是因为我……都怪我…… +hs: 如果不是我这么没用,她就不用…… hs: 如果我当时在你身边…你也就不会…… hs: 废物!我是个骗子!我不值得你们看得起…都怪我…都怪我…都怪我!!!! hs: 我是个…没用的……东西………… diff --git a/Assets/Scenes/梦境.unity b/Assets/Scenes/梦境.unity index 6144fcda6..d15063403 100644 --- a/Assets/Scenes/梦境.unity +++ b/Assets/Scenes/梦境.unity @@ -815,74 +815,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &1116970087 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1116970090} - - component: {fileID: 1116970089} - - component: {fileID: 1116970088} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1116970088 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1116970087} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &1116970089 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1116970087} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &1116970090 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1116970087} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1195418927 GameObject: m_ObjectHideFlags: 0 @@ -946,13 +878,15 @@ MonoBehaviour: previewMorphProgress: 1 previewStage: 3 animatePreviewCursor: 1 - previewInputBuffer: false + previewInputBuffer: "\u4E0D\u786E\u5B9A" previewLines: ">> SYSTEM: Reality_Engine.sys stopped.\n>> SYSTEM: Rendering underlying code...\n>> LOADING: Ocean_Simulation.sh ... OK\nroot@sys:~$ print_string(\"\u6D77\u662F\u5B58\u5728\u7684\u5417?\")" previewTypingLine: maxInputLength: 20 promptString: '> bit seaExists = ' onCompleteNode: "\u82CF\u9192" + typewriterCharDelay: 0.025 + bootSpeedMultiplier: 4 bootSequence: - text: '>> SYSTEM: Reality_Engine.sys stopped.' style: 3 @@ -1776,5 +1710,4 @@ SceneRoots: - {fileID: 676277671} - {fileID: 1784701442} - {fileID: 861686055} - - {fileID: 1116970090} - {fileID: 383939068} diff --git a/Assets/Scripts/UI/Components/DreamTerminalUI.cs b/Assets/Scripts/UI/Components/DreamTerminalUI.cs index 791959623..dca4411a4 100644 --- a/Assets/Scripts/UI/Components/DreamTerminalUI.cs +++ b/Assets/Scripts/UI/Components/DreamTerminalUI.cs @@ -88,6 +88,14 @@ namespace AibisDream.UI [SerializeField] private string promptString = "bit seaExists = "; [SerializeField] private string onCompleteNode = "苏醒"; + [Header("速度(可调)")] + [Tooltip("打字机每字延迟(秒),越小越快")] + [Range(0.005f, 0.15f)] + [SerializeField] private float typewriterCharDelay = 0.025f; + [Tooltip("启动日志整体速度倍率,1=正常,2=两倍快,0.5=半速")] + [Range(0.25f, 4f)] + [SerializeField] private float bootSpeedMultiplier = 1f; + [Header("启动日志")] [SerializeField] private List bootSequence = new() { @@ -434,7 +442,7 @@ namespace AibisDream.UI string cursorHex = renderRow.showCursor ? colorHex : colorHex[..6] + "00"; - displayText += $"\U+2590"; + displayText += $"{'\u2588'}"; } DrawTextWithGhost(textPos, displayText, c); @@ -705,19 +713,21 @@ namespace AibisDream.UI private IEnumerator RunBootSequence() { _phase = TerminalPhase.BootSequence; - yield return new WaitForSeconds(0.3f); + float speed = Mathf.Max(0.25f, bootSpeedMultiplier); + yield return new WaitForSeconds(0.3f / speed); foreach (var entry in bootSequence) { Color c = StyleToColor(entry.style); - _typewriterCoroutine = StartCoroutine(TypewriterLine(entry.text, c)); + float charDelay = typewriterCharDelay / speed; + _typewriterCoroutine = StartCoroutine(TypewriterLine(entry.text, c, charDelay)); yield return WaitForTypewriter(); if (entry.delayAfter > 0f) - yield return new WaitForSeconds(entry.delayAfter); + yield return new WaitForSeconds(entry.delayAfter / speed); } - yield return new WaitForSeconds(0.3f); + yield return new WaitForSeconds(0.3f / speed); EnterInputPhase(); }