feat: SongSelect UI polish — marquee title, button states, font
- MarqueeText: scrolling title for long song names (RectMask2D clipped) - SongDetailPanel: difficulty selected = green (img.color direct set) - SongSelectManager: ALL/OWNED tab active state via img.color - Card layout: DestroyImmediate + correct rebuild order to fix zero-size title bug - NanumGothic SDF fallback configured on LiberationSans for Korean support Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -33,8 +33,8 @@ public class SongDetailPanel : MonoBehaviour
|
||||
[Header("씬 이름")]
|
||||
[SerializeField] private string gameSceneName = "Game";
|
||||
|
||||
private static readonly Color SelectedColor = new Color(0.2f, 0.78f, 0.4f);
|
||||
private static readonly Color DeselectedColor = Color.white;
|
||||
private static readonly Color SelectedColor = new Color(0.2f, 0.78f, 0.4f);
|
||||
private static readonly Color DeselectedImgColor = new Color(1f, 1f, 1f, 0.12f); // original button alpha
|
||||
|
||||
private SongInfo currentSong;
|
||||
private string selectedDifficulty;
|
||||
@@ -122,10 +122,17 @@ public class SongDetailPanel : MonoBehaviour
|
||||
{
|
||||
foreach (var (key, getBtn) in diffSlots)
|
||||
{
|
||||
Button btn = getBtn(this);
|
||||
var colors = btn.colors;
|
||||
colors.normalColor = (key == selectedDifficulty) ? SelectedColor : DeselectedColor;
|
||||
btn.colors = colors;
|
||||
Button btn = getBtn(this);
|
||||
bool selected = key == selectedDifficulty;
|
||||
|
||||
if (btn.targetGraphic is Image img)
|
||||
img.color = selected ? SelectedColor : DeselectedImgColor;
|
||||
|
||||
var cb = btn.colors;
|
||||
cb.normalColor = Color.white;
|
||||
cb.highlightedColor = selected ? new Color(0.3f, 0.95f, 0.55f) : new Color(1f, 1f, 1f, 0.25f);
|
||||
cb.pressedColor = selected ? new Color(0.15f, 0.6f, 0.3f) : new Color(1f, 1f, 1f, 0.35f);
|
||||
btn.colors = cb;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user