Files
AZTECH_WB/Assets/Scripts/UI/SettingPanel/GraphicsSettingItem.cs
정영민 18bc516f1d [정영민] 아즈텍 UI 디자인 변경 및 기능 수정 1차
26.04.03
가상공장 화면 디자인 반영
  • 좌측 도구 창, 상단 UI, 하단 UI
  • 생산 현황판, 알림 현황판
  • 설비 라벨, 요약 팝업, 대시보드, 데이터 보드
  • 설정창, 미니맵, AI 시뮬레이션 결과창, 나가기 팝업
가상 공장 화면 디자인 변경에 따른 기능 추가
  • 미니맵 드래그 및 위치 조정 기능 추가
  • UI 상호 작용(호버링, 선택, 위치 이동, 재설정)
  • UI 기능 추가(상태 표시, 색상)
2026-04-03 11:50:05 +09:00

98 lines
2.9 KiB
C#

using AZTECHWB.Extensions;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
namespace AZTECHWB.UI
{
public class GraphicsSettingItem : MonoBehaviour
{
TMP_Dropdown Dropdown_Value;
Toggle Toggle_Value;
bool isDropdownOpen;
Image dropdownImage;
Sprite dropdownNormalSprite;
Sprite dropdownSelectedSprite;
public void InitDropdown(UnityAction<int> onValueChanged)
{
transform.TryGetComponentInChildren(nameof(Dropdown_Value), out Dropdown_Value);
Dropdown_Value.onValueChanged.AddListener(onValueChanged);
dropdownImage = Dropdown_Value.targetGraphic as Image;
dropdownNormalSprite = dropdownImage.sprite;
dropdownSelectedSprite = Dropdown_Value.spriteState.selectedSprite;
}
public void InitToggle(UnityAction<bool> onValueChanged)
{
transform.TryGetComponentInChildren(nameof(Toggle_Value), out Toggle_Value);
Toggle_Value.onValueChanged.AddListener(onValueChanged);
}
public void SetDropdownOptions(string[] options)
{
Dropdown_Value.ClearOptions();
Dropdown_Value.AddOptions(new System.Collections.Generic.List<string>(options));
}
public void SetDropdownValue(int index)
{
Dropdown_Value.SetValueWithoutNotify(index);
}
public void SetToggleValue(bool value)
{
Toggle_Value.SetIsOnWithoutNotify(value);
}
void LateUpdate()
{
if (Dropdown_Value == null) return;
var list = Dropdown_Value.transform.Find("Dropdown List");
if (list != null && !isDropdownOpen)
{
isDropdownOpen = true;
StyleDropdownItems(list);
}
if (isDropdownOpen)
{
if (list != null)
{
dropdownImage.sprite = dropdownSelectedSprite;
}
else
{
dropdownImage.sprite = dropdownNormalSprite;
isDropdownOpen = false;
var eventSystem = UnityEngine.EventSystems.EventSystem.current;
if (eventSystem != null)
eventSystem.SetSelectedGameObject(null);
}
}
}
void StyleDropdownItems(Transform list)
{
var content = list.Find("Viewport/Content");
if (content == null) return;
for (int i = 0; i < content.childCount; i++)
{
var item = content.GetChild(i);
if (item.GetComponent<DropdownItemStyler>() == null)
{
var styler = item.gameObject.AddComponent<DropdownItemStyler>();
styler.Init();
}
}
}
}
}