26.04.03 가상공장 화면 디자인 반영 • 좌측 도구 창, 상단 UI, 하단 UI • 생산 현황판, 알림 현황판 • 설비 라벨, 요약 팝업, 대시보드, 데이터 보드 • 설정창, 미니맵, AI 시뮬레이션 결과창, 나가기 팝업 가상 공장 화면 디자인 변경에 따른 기능 추가 • 미니맵 드래그 및 위치 조정 기능 추가 • UI 상호 작용(호버링, 선택, 위치 이동, 재설정) • UI 기능 추가(상태 표시, 색상)
98 lines
2.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|