728x90
728x90
미션 3이 마우스였다면 미션 4는 키보드이다.
위와 같이 설정해주고 나머지 그림도 다 바꾼다.
버튼 삭제 후 백그라운드 사진 크기에 맞춰 캔슬 버튼 위치도 옮겨 주었다.
그리고 버튼 생성!
그리고 한번에 정리하기 위해 백그라운드를 ctrl + D하여 새로 만들어준 뒤 이름을 Numbers로 바꾼다. 그 안에 있는것 들은 다 지우고, numbers 사진 지우고, 투명도를 0으로 만든뒤 백그라운드 안에 넣고, number들을 안에 넣는다. 사진으로 보면 편할 것이다.
그리고 numbers에 하나만 추가해주면 번호들이 정리된다.
이거하나로 번호가 아래와 같이 된다.
그리고 이제 다 번호를 넣어준다.
다 넣어줬으면 미션 1을 ctrl + D 하여 복사해준뒤 클래스명을 후딱 4로 바꿔서 미션 4 스크립트를 시작한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Mission4 : MonoBehaviour
{
// 버튼을 가져오자
public Transform numbers;
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>();
// 숫자 랜덤 배치
for(int i = 0; i < 10; i++)
{
//전부다 섞인다.
Sprite temp = numbers.GetChild(i).GetComponent<Image>().sprite;
int rand = Random.Range(0,10);
numbers.GetChild(i).GetComponent<Image>().sprite = numbers.GetChild(rand).GetComponent<Image>().sprite;
numbers.GetChild(rand).GetComponent<Image>().sprite = temp;
}
}
//x버튼 누르면 호출
public void ClickCancle()
{
anim.SetBool("IsUp", false);
playerCtrl_script.MissionEnd();
}
// 미션 성공하면 호출될 함수
public void MissionSuccess()
{
ClickCancle();
}
}
미션 4 스크립트이다. 랜덤으로 숫자를 앞에 배치해주는 것 말고는 특별한 것이 없다.
이제 퍼블릭에 넘버스 폴더!!! 넣어주고, 캔슬버튼에는 미션 4를 넣어준다.
실행하면 랜덤한 번호가 나온다.
이제 게임을 구현!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Mission4 : MonoBehaviour
{
// 버튼을 가져오자
public Transform numbers;
public Color blue;
Animator anim;
PlayerCtrl playerCtrl_script;
int count;
// 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>();
// 모든 버튼의 색을 하얀색으로 초기화
for(int i = 0; i < numbers.childCount; i++)
{
numbers.GetChild(i).GetComponent<Image>().color = Color.white;
numbers.GetChild(i).GetComponent<Button>().enabled = true; // 버튼 초기화
}
// 숫자 랜덤 배치
for(int i = 0; i < 10; i++)
{
//전부다 섞인다.
Sprite temp = numbers.GetChild(i).GetComponent<Image>().sprite;
int rand = Random.Range(0,10);
numbers.GetChild(i).GetComponent<Image>().sprite = numbers.GetChild(rand).GetComponent<Image>().sprite;
numbers.GetChild(rand).GetComponent<Image>().sprite = temp;
}
count = 1;
}
//x버튼 누르면 호출
public void ClickCancle()
{
anim.SetBool("IsUp", false);
playerCtrl_script.MissionEnd();
}
// 숫자 버튼 누르면 호출 될 함수
public void ClickNumber()
{
if(count.ToString() == EventSystem.current.currentSelectedGameObject.GetComponent<Image>().sprite.name)
{// 차례대로 숫자를 누를것인지 판단
// 버튼 색 변경
EventSystem.current.currentSelectedGameObject.GetComponent<Image>().color = blue; // 바꾸는게 생기면 초기화도 생각해야 한다.
// 성공했으면 버튼 비활성화
EventSystem.current.currentSelectedGameObject.GetComponent<Button>().enabled = false;//다신 누를 수 없게! 그럼 초기화도 !
count++;
// 성공 여부 체크
if(count == 11)
{
Invoke("MissionSuccess",0.2f); // 0.2초뒤 실행
}
}
}
// 미션 성공하면 호출될 함수
public void MissionSuccess()
{
ClickCancle();
}
}
여기도 딱히 어려운 것은 없다. 내가 올바른 버튼을 누르면 카운트가 올라가서 마지막 카운트가 되면 게임이 끝나는 것이다.
이거 말고도 mission 4에서 색 정해주는 것도 있었다.
이제 순서대로 숫자 눌러주면 끝이다!.
끝!
728x90
'개발 > 게임 교육' 카테고리의 다른 글
[Unity class] 게임 교육 19 - 마지막 미션1 (0) | 2024.01.06 |
---|---|
[Unity class] 게임 교육 18 - 각도 조종하기 (1) | 2024.01.06 |
[Unity]게임 교육 16 - 미션 3 (1) | 2024.01.06 |
[Unity] 게임 교육 15.5 - 쓰레기 버리기 오류 발생! (0) | 2024.01.05 |
[Unity] 게임 교육 15 - 쓰레기 버리기 버튼 만들기 (0) | 2024.01.05 |