Files
ichni_Official/Assets/Scripts/UI/Base/SettingsUIElementBase.cs
SoulliesOfficial fe00ecfcc7 微调
2026-07-24 03:43:11 -04:00

73 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using I2.Loc;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
namespace Ichni.UI
{
public abstract class SettingsUIElementBase : MonoBehaviour
{
public string title;
public string subTitle;
public Image titleBackground;
public TMP_Text titleText;
public TMP_Text subTitleText;
public UnityAction updateValueAction;
/// <summary>
/// 初始化设置控件的标题区域。
/// <paramref name="preservePrefabTitle"/> 用于已经由 Unity Localization 直接驱动标题的控件:
/// 运行时代码不会覆盖或隐藏 Prefab 中的本地化标题。
/// </summary>
public virtual void SetUp(string title = "", string subTitle = "", bool preservePrefabTitle = false)
{
if (preservePrefabTitle)
{
return;
}
if (title != "")
{
SetTitle(title, subTitle);
}
else
{
titleBackground.gameObject.SetActive(false);
titleText.gameObject.SetActive(false);
subTitleText.gameObject.SetActive(false);
}
}
public void SetTitle(string title, string subTitle = "")
{
this.title = title;
this.subTitle = subTitle;
titleText.gameObject.SetActive(true);
var titleLoc = titleText.GetComponent<Localize>();
if (titleLoc != null)
titleLoc.SetTerm(title);
else
titleText.text = title;
if (subTitle != "")
{
subTitleText.gameObject.SetActive(true);
var subLoc = subTitleText.GetComponent<Localize>();
if (subLoc != null)
subLoc.SetTerm(subTitle);
else
subTitleText.text = subTitle;
}
else
{
subTitleText.gameObject.SetActive(false);
}
}
}
}