using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class OkOrCancel : MonoBehaviour
{
private AudioManager theAudio;//오디오 매니저 장착
public string key_sound;
public string enter_sound;
public string cancel_sound;//각종소리
public GameObject up_Panel;//위쪽 판넬 활성화
public GameObject down_Panel;//아래쪽 판넬 활성화
public Text up_Text;//위쪽 텍스트
public Text down_Text;//아래쪽 텍스트
public bool activated;//활성화
private bool keyInput;//키 입력 활성화
private bool result = true;//결과를 true로 선언
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
theAudio = FindAnyObjectByType<AudioManager>();//오디오 매니져 장착
}
public void Selected()//위아래 선택
{
theAudio.Play(key_sound);//소리재생
result = !result;//결과 값을 반전
if (result)
{
up_Panel.gameObject.SetActive(true);// 결과값이 true일 경우 활성화
down_Panel.gameObject.SetActive(false);//결과값이 false일 경우 비활성화
}
else
{
up_Panel.gameObject.SetActive(false);//결과 값이 false일 경우 비활성화
down_Panel.gameObject.SetActive(true);//결과 값이 fasle일 경우 활성화
}
}
public void ShowTwoChoice(string _upText, string _downText)//인수로 위족 텍스트와 아래쪽 텍스트를 받아옴
{
activated = true;//선택지 활성화
result = true;//결과값을 참
up_Text.text = _upText;//인수로 받아온 텍스트를 up_Text에 적용한다
down_Text.text = _downText;//인수로 받아온 텍스트를 down_Text에 적용한다
up_Panel.gameObject.SetActive(true);//여기 변경했음
down_Panel.gameObject.SetActive(false);//여기 변경했음
StartCoroutine(ShowTwoChoiceCoroutine());//코루틴으로 0.1f 대기한다
}
public bool GetResult()//결과 값을 반환
{
return result;
}
IEnumerator ShowTwoChoiceCoroutine()//대기 코루틴
{
yield return new WaitForSeconds(0.1f);
keyInput = true;
}
// Update is called once per frame
void Update()
{
if (keyInput)//키 입력이 활성화 됬을때
{
if (Input.GetKeyUp(KeyCode.DownArrow))//아래쪽 누름
{
Selected();//위아래 선택
}
else if (Input.GetKeyUp(KeyCode.UpArrow))//위쪽 누름
{
Selected();//위아래 선택
}
else if (Input.GetKeyUp(KeyCode.Z))//Z키 입력시 인풋을 해제하고 활성화도 해체
{
theAudio.Play(enter_sound);
keyInput = false;
activated = false;//소리를 재생하고 모두 비활성화
}
else if (Input.GetKeyUp(KeyCode.X))
{
theAudio.Play(cancel_sound);
keyInput = false;
activated = false;//소리를 재생하고 비활성화
result = false;//아이템을 못 먹게 취소
}
}
}
}
OKOrCancel 스크립트에서
표시한 부분을 잘못 작성해서 로직에 오류가 있었음
아이템 사용할 때 위 아래 표시가 이상하게 되는 것을 수정함
'쯔꾸르식 유니티 게임 공부' 카테고리의 다른 글
33.장비아이템 효과 추가 (0) | 2025.03.11 |
---|---|
32.장비창 구현 (0) | 2025.03.10 |
31.이팩트 (0) | 2025.03.07 |
30.몬스터 처치, 레밸 UP (1) | 2025.03.07 |
29.피격효과 스텟구현 (0) | 2025.03.05 |