优化+清理

This commit is contained in:
SepComet
2026-04-26 15:02:56 +08:00
parent 41ce6f5834
commit 1fae93ee41
30 changed files with 583 additions and 697 deletions
@@ -49,9 +49,7 @@ namespace UI
{
"Other",
"Subtitle",
"Time",
"LiangSiCheng",
"LinHuiYin"
"Time"
};
public override void StartDialog(DialogFormContext context)
@@ -130,6 +128,13 @@ namespace UI
return;
}
if (!HasSpeakerPortrait(_context.SpeakerId))
{
ClearSpeakerState();
ApplySpeakerLayout(false, false, true);
return;
}
bool isRightSpeaker = context.Direction > 0;
if (isRightSpeaker)
{
@@ -381,13 +386,21 @@ namespace UI
int requestVersion = isRightSpeaker ? ++_rightPortraitRequestVersion : ++_leftPortraitRequestVersion;
if (string.IsNullOrWhiteSpace(speakerId) || NonPortraitSpeakerIds.Contains(speakerId))
{
portraitImage.sprite = null;
return;
}
int portraitCount = ResolveAvailablePortraitCount(speakerId);
if (portraitCount <= 0)
{
portraitImage.sprite = null;
return;
}
string portraitAssetName = $"Characters/{speakerId}-{ResolvePortraitIndex(speakerId, lineId, portraitCount)}.png";
if (GameEntry.SpriteCache == null)
{
portraitImage.sprite = null;
return;
}
@@ -400,10 +413,7 @@ namespace UI
return;
}
if (sprite != null)
{
_rightImage.sprite = sprite;
}
_rightImage.sprite = sprite;
return;
}
@@ -412,10 +422,7 @@ namespace UI
return;
}
if (sprite != null)
{
_leftImage.sprite = sprite;
}
_leftImage.sprite = sprite;
});
}
@@ -449,6 +456,11 @@ namespace UI
return GameEntry.Dialog.GetSpeakerPortraitCount(speakerId);
}
private static bool HasSpeakerPortrait(string speakerId)
{
return ResolveAvailablePortraitCount(speakerId) > 0;
}
private static bool IsHumanSpeaker(string speakerId)
{
if (string.IsNullOrWhiteSpace(speakerId))
+1 -1
View File
@@ -46,4 +46,4 @@ namespace UI
GameEntry.Event.Fire(this, MenuExitEventArgs.Create());
}
}
}
}
+43 -3
View File
@@ -9,6 +9,8 @@ namespace UI
{
public class SettingForm : UGuiForm
{
private static readonly string[] NavigateButtonNames = { "SoundButton", "GameButton", "ScreenButton" };
[SerializeField] private Transform _navigate;
[SerializeField] private Image[] _navigateButtonImages;
@@ -95,20 +97,58 @@ namespace UI
public void OnNavigateButtonClick(int index)
{
RefreshNavigateButtonImages();
if (_navigateButtonImages == null || _navigateButtonImages.Length == 0)
{
Log.Error("Navigate button images are invalid.");
return;
}
if (index < 0 || index >= _navigateButtonImages.Length)
{
Log.Error("NavigateButtonClick index is out of range.");
return;
}
if (_navigateButtonImages[0] == null)
_navigateButtonImages[0] = _navigate.Find("SoundButton")?.GetComponent<Image>();
for (int i = 0; i < _navigateButtonImages.Length; i++)
{
if (_navigateButtonImages[i] == null)
{
continue;
}
_navigateButtonImages[i].enabled = i == index;
}
}
private void RefreshNavigateButtonImages()
{
if (_navigate == null)
{
Log.Error("Navigate transform is invalid.");
return;
}
if (_navigateButtonImages == null || _navigateButtonImages.Length != NavigateButtonNames.Length)
{
_navigateButtonImages = new Image[NavigateButtonNames.Length];
}
for (int i = 0; i < NavigateButtonNames.Length; i++)
{
var button = _navigate.Find(NavigateButtonNames[i]);
if (button == null)
{
Log.Error($"Can not find navigate button '{NavigateButtonNames[i]}'.");
_navigateButtonImages[i] = null;
continue;
}
_navigateButtonImages[i] = button.GetComponent<Image>();
}
}
public void OnReturnButtonClick()
{
var dialogParams = new DialogParams