주문 생성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()가 호출되지 않습니다.