This commit is contained in:
2025-11-07 17:01:39 +08:00
parent 20b0b1444a
commit 98d86a4aed
12 changed files with 1002 additions and 805 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9e9d31a584a97f447b431fb1cebb3e85
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,24 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6508e9e28418d5e429ba26325d369d2a, type: 3}
m_Name: Bubble Text Style
m_EditorClassIdentifier:
enSpeed:
normalCharSpeed: 0
longCharSpeed: 0
middleCharSpeed: 0
cnSpeed:
normalCharSpeed: 0
longCharSpeed: 0
middleCharSpeed: 0
enCharSpace: 0
cnCharSpace: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c5db4e4014d7407479058bb76a3c306d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,24 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6508e9e28418d5e429ba26325d369d2a, type: 3}
m_Name: Screen Text Style
m_EditorClassIdentifier:
enSpeed:
normalCharSpeed: 0
longCharSpeed: 0
middleCharSpeed: 0
cnSpeed:
normalCharSpeed: 0
longCharSpeed: 0
middleCharSpeed: 0
enCharSpace: 0
cnCharSpace: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9d6434b6274f58f4e9911355e9e2bb79
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+2 -2
View File
@@ -70,8 +70,8 @@ namespace AibisDream
VariableSet
}
public enum LocalizationEvent
public enum SettingChangeEvent
{
LocaleChanged
TextSpeed
}
}
+1 -1
View File
@@ -43,7 +43,7 @@ namespace AibisDream
AudioManager.Instance.SetVolume(float.Parse(value, CultureInfo.InvariantCulture));
break;
case "TextSpeed":
// TODO 调整文字速度
EnumEventSystem.Global.Send(SettingChangeEvent.TextSpeed, value);
break;
case "Resolution":
// TODO 调整分辨率
+49
View File
@@ -0,0 +1,49 @@
using System;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.UI;
namespace AibisDream
{
[CreateAssetMenu(menuName = "Style/Text Anima Style")]
public class TextAnimaStyle : ScriptableObject
{
public TextSpeed enSpeed;
public TextSpeed cnSpeed;
public float enCharSpace;
public float cnCharSpace;
[Serializable]
public struct TextSpeed
{
public float slowCharSpeed;
public float normalCharSpeed;
public float fastCharSpeed;
}
public float GetTextSpeed(TextSpeedEnum speedEnum, Locale locale)
{
var textSpeed = locale.Identifier.Code switch
{
"en" => enSpeed,
"zh-Hans" => cnSpeed,
_ => cnSpeed,
};
return speedEnum switch
{
TextSpeedEnum.Slow => textSpeed.slowCharSpeed,
TextSpeedEnum.Normal => textSpeed.normalCharSpeed,
TextSpeedEnum.Fast => textSpeed.fastCharSpeed,
_ => textSpeed.normalCharSpeed,
};
}
}
public enum TextSpeedEnum
{
Slow,
Normal,
Fast
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6508e9e28418d5e429ba26325d369d2a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -5,6 +5,7 @@ using AibisDream.Utility;
using Febucci.UI.Core;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.UI;
namespace AibisDream
@@ -23,10 +24,12 @@ namespace AibisDream
#region
[Header("参数")]
[SerializeField] private ActorRole role;
[SerializeField] private int idx;
[SerializeField] private int maxWidth;
[SerializeField] private int minWidth;
[SerializeField] private TextAnimaStyle textAnimaStyle;
public ActorRole Role => role;
public int Idx => idx;
@@ -50,6 +53,8 @@ namespace AibisDream
SetStyle(data.bubbleStyle, data.pivotType);
// 注册事件
_typewriter.onTextShowed.AddListener(InvokeLineShown);
LocalizationKit.LocaleChanged += OnLocaleChanged;
EnumEventSystem.Global.Send(SettingChangeEvent.TextSpeed, value);
}
private void InvokeLineShown()
@@ -77,6 +82,8 @@ namespace AibisDream
: $"{bubbleStyle.bubbleSpriteAddress}[{pivotType.ToString()}]";
_bubbleImage.sprite = ResourceKit.LoadAssetSync<Sprite>(spritePath);
}
private void InitRefs()
@@ -124,6 +131,12 @@ namespace AibisDream
}
}
public void OnLocaleChanged(Locale locale)
{
// _typewriter.TypingSpeed = textAnimaStyle.GetTextSpeed(TextSpeedEnum.Normal, locale);
_typewriter.SetTypewriterSpeed(textAnimaStyle.GetTextSpeed(TextSpeedEnum.Normal, locale));
}
public void Hide()
{
gameObject.SetActive(false);