사용자 인터페이스 만들기
- 슬라이더 만들기

슬라이더 설명
- 채우기 위해

채우기 영역에서 채우기의 이미지 색상을 변경하면 위 이미지와 같이 해당 값에 따라 색상이 변경됩니다.
- 채우기 영역

채우기 영역의 크기를 조정하여 색상으로 채워지는 부분을 제어할 수 있습니다.
- (세부 사항)HP 바와 같은 물체를 따라가게 만드는 방법

슬라이더를 공간으로 드래그하는 카바를 변경하고 소스에서 개체의 위치를 조정합니다.
소스 제어의 진행 표시줄 방법
캔버스에서 진행률 표시줄을 제어하는 CS 파일 구성 요소의 경우

public class ProgressBarTest : MonoBehaviour
{
protected Dictionary<Type, UnityEngine.Object()> _objects = new Dictionary<Type, UnityEngine.Object()>();
enum GameObjects
{
Slider,
}
void Start()
{
Bind<GameObject>(typeof(GameObjects)); //slider오브젝트를 찾아서 내부 Dictionary _objects에 저장한다.
GetObject((int)GameObjects.Slider);//_objects에 저장한 slider를 찾아온다.
}
int _num = 0; // slider에 적용할 data 값.
int AllData = 100;// slider의 max
void Update()
{
SetTimerRatio(_num / (float)AllData); // slider에 데이터 적용 함수.
_num++;
}
public void SetTimerRatio(float ratio)
{
GameObject go = GetObject((int)GameObjects.Slider); //slider 오브젝트를 찾아 go 변수에 객체를 할당한다.
Slider slider = go.GetComponent<Slider>();//해당 go 오브젝트 즉 canvas가 있는 오브젝트의 slider 컴포넌트를 찾아온다.
slider.value = ratio;//slider value를 통해 값을 적용한다.
}
// slider오브젝트를 찾아서 내부 Dictionary _objects에 저장한다.
protected void Bind<T>(Type type) where T : UnityEngine.Object
{
string() names = Enum.GetNames(type);
UnityEngine.Object() objects = new UnityEngine.Object(names.Length);
_objects.Add(typeof(T), objects);
for (int i = 0; i < names.Length; i++)
{
if (typeof(T) == typeof(GameObject))
objects(i) = Util.FindChild(gameObject, names(i), true);
else
objects(i) = Util.FindChild<T>(gameObject, names(i), true);
if (objects(i) == null)
Debug.Log($"Failed to bind({names(i)})");
}
}
//_objects에 저장한 slider를 찾아온다.
protected GameObject GetObject(int idx) { return Get<GameObject>(idx); }
protected T Get<T>(int idx) where T : UnityEngine.Object
{
UnityEngine.Object() objects = null;
if (_objects.TryGetValue(typeof(T), out objects) == false)
return null;
return objects(idx) as T;
}
}
슬라이더에서 진행률 표시줄을 제어하는 cs 파일 구성 요소의 경우

public class ProgressBarTest : MonoBehaviour
{
int _num = 0; // slider에 적용할 data 값.
int AllData = 100;// slider의 max
void Update()
{
SetTimerRatio(_num / (float)AllData); // slider에 데이터 적용 함수.
_num++;
}
public void SetTimerRatio(float ratio)
{
Slider slider = gameObject.GetComponent<Slider>();//gameOjbect는 ProgressBarTest.cs가 컴포넌트로 있는 자기 자신을 의미한다.
//자기자신의 컴포넌트 중 slider를 가져온다.
slider.value = ratio;//slider value를 통해 값을 적용한다.
}
}