81 lines
2.4 KiB
C#
81 lines
2.4 KiB
C#
using System.Linq;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace Studio.UVC.UI
|
|
{
|
|
/// <summary>
|
|
/// 값이 없는 상태가 존재하면 안될 때
|
|
/// 선택지 중 하나만 골라야 할 때
|
|
/// 라디오 버튼 사용
|
|
/// </summary>
|
|
[RequireComponent(typeof(Toggle))]
|
|
public class UVCRadioButton : MonoBehaviour
|
|
{
|
|
private Toggle toggle;
|
|
private TextMeshProUGUI label;
|
|
private Image background;
|
|
private Image checkmark;
|
|
public Toggle Toggle
|
|
{
|
|
get
|
|
{
|
|
if (toggle == null)
|
|
toggle = GetComponent<Toggle>();
|
|
return toggle;
|
|
}
|
|
}
|
|
public TextMeshProUGUI Label
|
|
{
|
|
get
|
|
{
|
|
if (label == null)
|
|
{
|
|
var findText = GetComponentsInChildren<TextMeshProUGUI>();
|
|
label = findText.FirstOrDefault(x => x.name.Equals(nameof(label), System.StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
return label;
|
|
}
|
|
}
|
|
public Image Background
|
|
{
|
|
get
|
|
{
|
|
if (background == null)
|
|
{
|
|
var findText = GetComponentsInChildren<Image>();
|
|
background = findText.FirstOrDefault(x => x.name.Equals(nameof(background), System.StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
return background;
|
|
}
|
|
}
|
|
public Image Checkmark
|
|
{
|
|
get
|
|
{
|
|
if (checkmark == null)
|
|
{
|
|
var findText = GetComponentsInChildren<Image>();
|
|
checkmark = findText.FirstOrDefault(x => x.name.Equals(nameof(checkmark), System.StringComparison.OrdinalIgnoreCase));
|
|
}
|
|
|
|
return checkmark;
|
|
}
|
|
}
|
|
private static GameObject prefab;
|
|
public static UVCRadioButton Create(string text, Transform parent = null)
|
|
{
|
|
if (prefab == null)
|
|
prefab = Resources.Load("Prefabs/Common/UVCRadioButton") as GameObject;
|
|
|
|
var asset = Instantiate(prefab, parent);
|
|
var radio = asset.GetComponent<UVCRadioButton>();
|
|
radio.GetComponentInChildren<TextMeshProUGUI>().text = text;
|
|
|
|
return radio;
|
|
}
|
|
}
|
|
} |