쯔꾸르식 유니티 게임 공부

26.a 오타 수정

ruripanda 2025. 3. 8. 19:10

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