일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c#
- 2020 KAKAO BLIND RECRUITMENT
- 탄막 스킬 범위
- 걷는건귀찮아
- 3344
- 마우스 따라다니기
- 탄막 이동
- 18249
- 회의실 배정
- 유니티
- 자료구조 목차
- 강의실2
- 알고리즘
- 토글 그룹
- 원형
- MySQL
- 수 만들기
- 단어 수학
- 윈도우
- 영상 프레임 추출
- AI Hub
- mysqld.sock
- 문자열 압축
- 우분투
- 알고리즘 목차
- 3273
- 탄막
- SWEA
- 그리디알고리즘
- 백준
- Today
- Total
와이유스토리
[아르마딜로 대시] 1. 토글, 토글 그룹(탄막 선택) 본문
토글(Toggle)이란?
On/Off 스위치 같은 역할. 토글 그룹 중 하나의 토글만 On시키는 기능
버튼 대신 토글을 사용한 이유는 별다른 소스코드 없이 토글 그룹에서 여러 개의 토글 중 하나만 On이 가능하기 때문입니다.
버튼을 사용하면 현재 켜져 있는 버튼을 Off시킨 후, 사용자가 선택한 버튼을 On시켜야 하는 번거로움이 있을 것이라 생각했습니다.
파란 오브젝트는 토글 그룹, 빨간 오브젝트는 토글입니다.
Add Component에서 Toggle Group과 Toggle 추가하면 됩니다.
토글을 처음 생성하면 Background와 Text가 존재하는데, 저는 Text가 필요 없어서 삭제했습니다.
Background가 OffButton이고, 키보드로 해당 토글을 선택하면 OnButton이 활성화됩니다.
먼저 토글 그룹은 Allow Switch Off를 선택하여 모든 토글을 OffButton으로 만듭니다.
토글에 Graphic은 토글이 활성화하면 나오는 이미지로 OnButton을 넣고, Group에는 파란 토글 그룹을 넣습니다.
저는 마우스의 영향을 받지 않도록 Interactable을 꺼두었습니다.
소스코드
밑의 소스 코드는 탄막게임 프로젝트하면서 구현한
키패드 총 6개 숫자키 중 하나를 누르면 토글 그룹 중 해당하는 하나의 토글만 On 시키고, 나머지 Off 기능입니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
public class Btn : MonoBehaviour
{
public ToggleGroup Btn; // 토글 그룹
public int num = 0; // 선택 번호
void Update()
{
Toggle[] toggles = Btn.GetComponentsInChildren<Toggle>(false); // 토글 그룹의 토글들
if (Input.GetKeyDown(KeyCode.Alpha1)) // 키보드 숫자 1
{
toggles[0].isOn = true; // 토글 선택
num = 0;
}
else if(Input.GetKeyDown(KeyCode.Alpha2)) // 키보드 숫자 2
{
toggles[1].isOn = true;
num = 1;
}
else if(Input.GetKeyDown(KeyCode.Alpha3)) // 키보드 숫자 3
{
toggles[2].isOn = true;
num = 2;
}
else if (Input.GetKeyDown(KeyCode.Alpha4)) // 키보드 숫자 4
{
toggles[3].isOn = true;
num = 3;
}
else if (Input.GetKeyDown(KeyCode.Alpha5)) // 키보드 숫자 5
{
toggles[4].isOn = true;
num = 4;
}
else if (Input.GetKeyDown(KeyCode.Alpha6)) // 키보드 숫자 6
{
toggles[5].isOn = true;
num = 5;
}
}
}
실행 결과
3번을 누르면 나머지 토글은 Off가 되고, 3번 토글이 OnButton 활성화가 됩니다.
For문을 이용하여 숫자키 클릭 구현
Input.GetKeyDown((KeyCode)(i + 49)을 이용한다. 여기서49는 숫자키 1을 의미한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
// 보스 플레이어의 탄막 버튼
public class BulletBtn : MonoBehaviour
{
public ToggleGroup bulletBtn; // 탄막 버튼
public int num = 0; // 탄막 선택 번호
Toggle[] toggles;
float time = 0f;
void Start()
{
// 보스가 아닐 때, 탄막 버튼 비활성화
if (PhotonNetwork.LocalPlayer.ActorNumber != GameObject.Find("RoomManager").GetComponent<Room>().bossActorNum)
{
gameObject.SetActive(false);
}
// 토글 버튼 등록
toggles = bulletBtn.GetComponentsInChildren<Toggle>(false);
toggles[0].isOn = true;
if(gameObject.activeSelf)
{
StartCoroutine(chooseBullet(0));
}
}
void Update()
{
// 밸런스 위해 시간차 두고 마우스 클릭 가능
if (time == 0)
{
for (int i = 0; i < 6; i++)
{
if (Input.GetKeyDown((KeyCode)(i + 49))) // 키보드 숫자 1은 49 ~ 6은 54
{
StartCoroutine(chooseBullet(i));
}
}
}
}
IEnumerator chooseBullet(int n)
{
if (num != n)
{
toggles[n].isOn = true; // 탄막 버튼 선택
toggles[num].isOn = false;
num = n; // 선택한 탄막 번호 저장
while (time < 3) // 3초 동안 탄막 번호 못 바꿈
{
time += Time.deltaTime;
yield return null;
}
time = 0;
}
}
}
'프로젝트 > 게임' 카테고리의 다른 글
[아르마딜로 대시] 7. 플레이어 대기하는 룸 생성 및 포톤 네트워크 함수 (0) | 2022.12.08 |
---|---|
[아르마딜로 대시] 6. 네트워크 평행세계, 객체 동기화 및 RPC(원격 프로시저 호출) 동기화 (0) | 2022.12.08 |
[아르마딜로 대시] 4. 유니티 원형 탄막 이동 (0) | 2021.01.06 |
[아르마딜로 대시] 3. 유니티 원형 탄막 생성 (0) | 2021.01.06 |
[아르마딜로 대시] 2. 마우스 따라다니는 이미지 & 숫자키로 탄막 스킬 변경 (0) | 2020.12.30 |