728x90
728x90
미션 3은 랩실에 있을 예정이므로 랩으로 옮겨준다,
배경도 바꿔주었고, 마우스 사진의 콜라이더도 닿을 수 있는 부분으로 오프셋 수정도 하였다. 그리고 복붙한거기 때문에 있는 스크립트도 삭제하여주고, 필요없는 버튼들 삭제 후 캔슬버튼 위치만 옮겨주었다.
UI의 text에서 오른쪽과 같은 설정으로 두개를 만들고, 검은 색은 포스트잇 위에, 흰색은 계산기 번호 판에 적어준다.
사진이 명확해 보이지 않아 하나 추가해준다.
버튼 하나하나 수작업이다...
그 후 투명도를 전부 0으로 맞춰준다.
그리고 미션 1 스크립트를 복붙하여 미션 3스크립트로 만들어준다. 클래스명 바꾸는거 잊지 말기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Mission3 : MonoBehaviour
{
public Text inputText;
Animator anim;
PlayerCtrl playerCtrl_script;
// Start is called before the first frame update
void Start()
{
//getcomponent를 그냥 쓰면 안된다. 여기서 애니메이션은 하위 파일에 있다.
anim = GetComponentInChildren<Animator>();
}
//미션 시작
public void MissionStart()
{
anim.SetBool("IsUp", true);
playerCtrl_script = FindObjectOfType<PlayerCtrl>();
}
//x버튼 누르면 호출
public void ClickCancle()
{
anim.SetBool("IsUp", false);
playerCtrl_script.MissionEnd();
}
//숫자 버튼 누르면 호출
public void ClickNumber()
{
if (inputText.text.Length <= 4)
{//글자 수 길이 제한
inputText.text += EventSystem.current.currentSelectedGameObject.name;
}
}
// 미션 성공하면 호출될 함수
public void MissionSuccess()
{
ClickCancle();
}
}
스크립트는 위에와 같다.
최대 5자리 이므로 더 입력을 못하게 막아놨다.
플레이 해보면 잘 된다.
스크립트 하고 넣는거 까먹지 말기 clicknumber랑 버튼이랑 연결해줘야 한다.
이제 삭제버튼 만들기!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Mission3 : MonoBehaviour
{
public Text inputText;
Animator anim;
PlayerCtrl playerCtrl_script;
// Start is called before the first frame update
void Start()
{
//getcomponent를 그냥 쓰면 안된다. 여기서 애니메이션은 하위 파일에 있다.
anim = GetComponentInChildren<Animator>();
}
//미션 시작
public void MissionStart()
{
anim.SetBool("IsUp", true);
playerCtrl_script = FindObjectOfType<PlayerCtrl>();
}
//x버튼 누르면 호출
public void ClickCancle()
{
anim.SetBool("IsUp", false);
playerCtrl_script.MissionEnd();
}
//숫자 버튼 누르면 호출
public void ClickNumber()
{
if (inputText.text.Length <= 4)
{//글자 수 길이 제한
inputText.text += EventSystem.current.currentSelectedGameObject.name;
}
}
// 삭제 버튼 누르면 호출
public void ClickDelete()
{// input된 택스트가 있어야만 작동한다.
if(inputText.text!= "")
{
inputText.text =inputText.text.Substring(0, inputText.text.Length - 1);
}
}
// 미션 성공하면 호출될 함수
public void MissionSuccess()
{
ClickCancle();
}
}
마지막을 날리는 코드!
그리고 델리트에 클릭 옵션도 추가!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Mission3 : MonoBehaviour
{
public Text inputText, keyCode;
Animator anim;
PlayerCtrl playerCtrl_script;
// Start is called before the first frame update
void Start()
{
//getcomponent를 그냥 쓰면 안된다. 여기서 애니메이션은 하위 파일에 있다.
anim = GetComponentInChildren<Animator>();
//초기화
inputText.text = "";
keyCode.text = "";
// 키코드 랜덤
for(int i = 0; i < 5; i++)
{
keyCode.text += Random.Range(0, 10); // 0 ~ 9
}
}
//미션 시작
public void MissionStart()
{
anim.SetBool("IsUp", true);
playerCtrl_script = FindObjectOfType<PlayerCtrl>();
}
//x버튼 누르면 호출
public void ClickCancle()
{
anim.SetBool("IsUp", false);
playerCtrl_script.MissionEnd();
}
//숫자 버튼 누르면 호출
public void ClickNumber()
{
if (inputText.text.Length <= 4)
{//글자 수 길이 제한
inputText.text += EventSystem.current.currentSelectedGameObject.name;
}
}
// 삭제 버튼 누르면 호출
public void ClickDelete()
{// input된 택스트가 있어야만 작동한다.
if(inputText.text!= "")
{
inputText.text =inputText.text.Substring(0, inputText.text.Length - 1);
}
}
// 체크 버튼 누르면 호출
public void ClickCheck()
{
if (inputText.text == keyCode.text)
{
MissionSuccess();
}
}
// 미션 성공하면 호출될 함수
public void MissionSuccess()
{
ClickCancle();
}
}
이제 마지막으로 정답을 표현해줄 것을 처음에 만들어 주고, 초기화 해준뒤 정답시 꺼지는 것 만들어주면 성공!
시작하면 잘 된다!
근데 나는 왜 이전값이 남아있지?
// Start is called before the first frame update
void Start()
{
//getcomponent를 그냥 쓰면 안된다. 여기서 애니메이션은 하위 파일에 있다.
anim = GetComponentInChildren<Animator>();
}
//미션 시작
public void MissionStart()
{
anim.SetBool("IsUp", true);
playerCtrl_script = FindObjectOfType<PlayerCtrl>();
//초기화
inputText.text = "";
keyCode.text = "";
// 키코드 랜덤
for (int i = 0; i < 5; i++)
{
keyCode.text += Random.Range(0, 10); // 0 ~ 9
}
}
초기화를 스타트에 넣을게 아니라 미션 스타트에 넣었어야 했다....
이제 잘 될 것이다.
코드 수정하니 잘 된다!
728x90
'개발 > 게임 교육' 카테고리의 다른 글
[Unity class] 게임 교육 18 - 각도 조종하기 (1) | 2024.01.06 |
---|---|
[Unity class]게임 교육 17 - 미션 4 (1) | 2024.01.06 |
[Unity] 게임 교육 15.5 - 쓰레기 버리기 오류 발생! (0) | 2024.01.05 |
[Unity] 게임 교육 15 - 쓰레기 버리기 버튼 만들기 (0) | 2024.01.05 |
[Unity] 게임 교육 14 - 미션 2 (0) | 2024.01.02 |