(산업단지 곰유박30) D+16

주문 생성3

Mission1을 복제하여 Mission3을 만듭니다.

Mission3은 실험실에 있으며 물체의 위치, 이미지, 크기, 충돌체 등을 설정합니다.

배경 이미지를 변경하고 불필요한 버튼을 삭제합니다.

2 텍스트 생성

1. 계산기에 적는 숫자 = InputText

2. 메모장에 쓸 숫자 = KeyCode

계산기의 버튼은 배경 이미지이므로 클릭할 수 없습니다. ==> 각 버튼을 만듭니다.

키를 누를 때 계산기에 기록하는 코드 작성

Mission3.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Mission3 : MonoBehaviour
{
    public Text inputText;  //ClickNumber()에서 클릭 된 버튼의 이름을 알아내 넣어줌.
    Animator anim;
    PlayerCtrl palyerCtrl_script;

   

    void Start()
    {
        anim = GetComponentInChildren<Animator>();
        //getComponant를 쓰면 Mission1 오브젝트에서 Componant를 찾게 될텐데, 
        //만들어진 애니메이션은 자식으로 있기 때문에 GetComponentInChildren으로 생성
    }

    //미션 시작
    public void MissionStart()
    {
        anim.SetBool("isUp", true);
        palyerCtrl_script = FindObjectOfType<PlayerCtrl>();
        //Mission은 처음부터 있지만 Character는 중간에 호출 돼서 생기기 때문에 MissionStart에서 불러와야 함.


    }

    //x버튼 누르면 호출
    public void ClickCancle()
    {
        anim.SetBool("isUp", false);
        palyerCtrl_script.MissionEnd();
    }

    //숫자 버튼 누르면 호출
    public void ClickNumber()
    {
        if (inputText.text.Length <= 4) //글자 수 제한 (5자리)
        {
            inputText.text += EventSystem.current.currentSelectedGameObject.name;
            // 방금 누른 버튼의 이름을 가져와 inputText.text에 들어감
            //ex) 1을 누르면 1이 되고, 2를 누르면 1이 없어지고 2만 되기 때문에 추가해주는 방식으로 해줘야함.
        }
    }

    //미션 성공하면 호출
    public void MissionSuccess()
    {
        ClickCancle();
    }
}

Mission3 스크립트를 Mission3 개체에 붙여넣고 InputText 개체를 입력 텍스트에 붙여넣습니다.

각 숫자 버튼에 OnClick Mission3을 추가하여 ClickNumber() 함수를 호출합니다.

더보기

** 텍스트 개체가 입력 텍스트에 안맞아서 한참을 헤맸는데.. 계속 안되서 포기하고 몇일뒤에 다시 시도했는데 안되서.. 그랬더니 드디어 강사님께 여쭤보니… 원래 의도는 아니었는데 나중에 계속 생각나더라구요.

==> 제가 사용하고 있는 유니티 버전이 선생님 버전과 달라 UI > 텍스트가 없습니다. TextMeshPro와 Text는 다른 타입입니다!!!!

일반 텍스트는 UI > Legacy에 있었습니다!


키를 누르는 즉시 숫자가 입력됩니다.

삭제 기능 만들기

Mission3.cs

//삭제 버튼 누르면 호출
    public void ClickDelete()
    {
        if(inputText.text != "")    //inputText의 text가 비어있지 않은 경우
        {
            //문자열 자르기
            inputText.text = inputText.text.Substring(0, inputText.text.Length - 1);     //0번째부터 마지막 글자 수를 뺀 나머지 

        }
    }

개체를 삭제하려면 onclick을 추가합니다. (미션3. 삭제 클릭)


스티커 메모에 난수 표시

Mission3.cs

public Text inputText, keyCode;

//초기화
        inputText.text = "";
        keyCode.text = "";
        
//미션 시작
    public void MissionStart()
    {
        ...
        // KeyCode random
        for (int i = 0; i < 5; i++)
        {
            keyCode.text += Random.Range(0, 10);
            //중복 배제 X
        }
    }
    
    ...
    
    //체크 버튼 누르면 호출
    public void ClickCheck()
    {
        if(inputText.text == keyCode.text)
        {
            MissionSuccess();
        }
    }

KeyCode를 Mission3 개체의 Mission3 스크립트에 붙여넣고 Onclick of Check(Mission3.ClickCheck)를 추가합니다.


임의의 키 코드

입력한 숫자가 다를 경우 MissionSuccess()가 호출되지 않습니다.