Toggle?
토글(Toggle) 컨트롤은 사용자가 옵션을 켜거나 끌 수 있도록 하는 체크박스이다.
익숙한 단어로는 라디오버튼이라고 할 수 있다.
Toggle 사용법
먼저 Script를 연결해둔 SoundManager Object에 토글들을 연결하고 이벤트를 넣어준다
backGroundMusic1.onValueChanged.AddListener(delegate { ToggleClick(); });
backGroundMusic2.onValueChanged.AddListener(delegate { ToggleClick(); });
backGroundMusic3.onValueChanged.AddListener(delegate { ToggleClick(); });
이벤트 리스너를 추가함으로써 토글의 상태가 변경될 때마다 ToggleClick() 메서드가 호출된다.
그리고 토글은 여러개중에 하나만 눌려야하기때문에 Group으로 묶어준다.
ToggleGroup이라는 빈오브젝트를 생성해서 그 안에 토글들을 하위자식으로 넣어주면된다.
그리고 ToggleGroup 오브젝트에는 Toggle Group 컴포넌트를 추가한다.
여기서 Allow Swich off를 활성화하면 토글 체크가 하나도 없어도 된다.
활성화를 안하면 무조건 하나라도 체크가 되어있어야 한다는 그런 것 같다.
이걸 활성화하고 같은 토글을 체크 했을때 체크가 취소된다.
이말은 즉 선택이 0개가 될 수 있는거다. 난 그걸 원하지않기때문에 손대지않았다.
토글을 자세하게 살펴보면
Is On이라는 기능이 보이는데 이건 체크를 할건지 안할건지 하는 기능이다.
기본적으로 BackGroundMusic1을 실행시킬거라 얘만 활성화해놨다.
그래서 코드에서는 Is On이 True인 아이의 음악을 재생시키게 만들었다.
public void ToggleClick()
{
if (backGroundMusic1.isOn)
{
PlayBackgroundMusic(0);
}
else if (backGroundMusic2.isOn)
{
PlayBackgroundMusic(1);
}
else if (backGroundMusic3.isOn)
{
PlayBackgroundMusic(2);
}
}
이렇게 하나씩 선택되는게 보인다.
만약 똑같은 토글을 선택했을때는 음악이 다시 재생된다.
> 내 코드 전문
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SoundManager : MonoBehaviour
{
public static SoundManager instance;
public AudioClip[] bgMusic;
public Toggle backGroundMusic1;
public Toggle backGroundMusic2;
public Toggle backGroundMusic3;
//private Toggle currentToggle;
private AudioSource audioSource;
private void Awake()
{
if (instance == null)
{
instance = this;
audioSource = GetComponent<AudioSource>();
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
// Start is called before the first frame update
void Start()
{
PlayBackgroundMusic(0);
backGroundMusic1.onValueChanged.AddListener(delegate { ToggleClick(); });
backGroundMusic2.onValueChanged.AddListener(delegate { ToggleClick(); });
backGroundMusic3.onValueChanged.AddListener(delegate { ToggleClick(); });
}
// Update is called once per frame
void Update()
{
}
public void PlayBackgroundMusic(int index)
{
if (index >= 0 && index < bgMusic.Length)
{
audioSource.clip = bgMusic[index];
audioSource.Play();
}
}
public void ToggleClick()
{
if (backGroundMusic1.isOn)
{
PlayBackgroundMusic(0);
}
else if (backGroundMusic2.isOn)
{
PlayBackgroundMusic(1);
}
else if (backGroundMusic3.isOn)
{
PlayBackgroundMusic(2);
}
}
}
오늘의 회고
스쿨아이돌.. 이런 컨셉은 바로 제가 정했습니다..
뽑힐 줄 몰랐어요.. 아니..
그래서 최선을 다해서 팀프로젝트 디자인과 사운드부분을 만지고 있습니다.
노션의 커버사진도 모두 제가 만들었습니다..
저희 캐릭터에 맞게 러브라이브 캐릭터들 머리색, 눈색 바꾸고 장착하고 있는 아이템도 만들어줬습니다.
나보고 다들 대단하대.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
컨셉 제대로 잡고 가고있습니다.
여러분 모두 화이팅 합시다 ㅎㅎ
참고문서
토글 - Unity 매뉴얼
토글(Toggle) 컨트롤은 사용자가 옵션을 켜거나 끌 수 있도록 하는 체크박스입니다.
docs.unity3d.com
'Record > TIL' 카테고리의 다른 글
[Unity] Unity Image에 동영상 넣기 (0) | 2024.05.22 |
---|---|
[Unity] Dictionary TryGetValue 메서드 활용하기 (ContainsKey와 차이점) (0) | 2024.05.21 |
[Unity] 유니티 Json으로 로그인 시스템 구현하기(읽고 쓰기가능한 경로) (2) | 2024.05.17 |
[Unity] 결합도와 응집도 (4) | 2024.05.16 |
[Unity] 탑다운뷰 게임 개인프로젝트 마무리 (2) | 2024.05.14 |