일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 값/참조/주소에 의한 전달
- C언어 계산기 프로그램
- 괄호 검사 프로그램
- auto 키워드
- C언어 스택 연산
- 범위 기반 for문
- const l-value참조자
- const화
- c언어 괄호검사
- 원형 연결 구조 연결된 큐
- 회전 및 자리 이동 연산
- string유형
- getline()함수
- IPv4 주소체계
- 백준 파이썬
- 입출력 관리자
- C언어 덱
- 알고리즘 조건
- 운영체제 기능
- l-value참조자
- 프로그래머스 배열만들기4
- 문제해결 단계
- 프로그래머스 푸드 파이트 대회
- 문자형 배열
- 주기억장치
- 유형 변환
- LAN의 분류
- r-value참조자
- 논리 연산
- 네트워크 결합
- Today
- Total
chyam
[unity]- 2d 탑다운 [ 설정 창 ] 본문
>설정 UI 버튼으로 만들기

실행하면 화면이 어두워지는데 이는 검은색 배경을 처음에 만든 다음에 전체화면으로 만들어서 투명도를 낮춰주었다. 전체화면은 shift+alt하고 맨오른쪽 맨밑에꺼 누르면된다.


앞에서 배운대로 anchor설정을 건들여서 퀘스트 내용이 나오는 부분은 맨위에 해두었다.
종료는 약간 주의하라고 빨간색으로했다.
-계속하기 버튼


public GameObject menuSet;
GameManager에 선언해준다.
private void Update()
{
if (Input.GetButtonDown("Cancel"))
{
if (menuSet.activeSelf)//켜져있는가
{
menuSet.SetActive(false);
}
else
menuSet.SetActive(true);
}
}
단발적인것이므로 Update에 해준다.
Cancel버튼은 esc이다.
esc를 눌렀을때, 메뉴창이 켜져있다면 메뉴창을 안보이게하고, 안보이면 켜준다.
버튼에 아래를 추가해준다.

클릭했을때 SetActive를 비활성화할수도있다.
- 종료하기
간단하다.. 원래 지정된 함수?가 있다.
public void GameExit()
{
Application.Quit(); //게임 바로 종료.
}

버튼에 위 사진처럼 해준다. 누르면 저 함수가 시행된다.
- 저장하기
public GameObject player;
public TextMeshProUGUI questTalk;
플레이어의 위치를 저장해야하므로 player를 선언한다.
퀘스트이름을 저장하는것도 선언한다.


선언하고 꼭 player를 넣어줘야한다.. 이거 안넣었다가 계속 저장안돼서 뭔가했었다....
questTalk는 퀘스트 이름이 나오는 부분.
public void GameSave()
{
PlayerPrefs.SetFloat("PlayerX", player.transform.position.x);
PlayerPrefs.SetFloat("PlayerY", player.transform.position.y);
PlayerPrefs.SetInt("QuestId", questManager.questId);
PlayerPrefs.SetInt("QuestActionIndex", questManager.questActionIndex);
PlayerPrefs.Save(); //위 내용 다 저장된다.
Debug.Log("Game saved!");
menuSet.SetActive(false);
}
플레이어의 위치를 저장하기 위해 x,y를 저장해준다.
퀘스트id랑 몇번째 인덱스인지도 저장한다.
PlayerPrefs는 간단한 데이터 저장 기능을 지원한다.
Save를하면 위의 내용이 다 저장된다.
그리고나서 메뉴창을 비활성화 시킨다.
public void GameLoad()
{
if (!PlayerPrefs.HasKey("PlayerX"))
return;
float x = PlayerPrefs.GetFloat("PlayerX");
float y = PlayerPrefs.GetFloat("PlayerY");
int questId = PlayerPrefs.GetInt("QuestId");
int questActionIndex = PlayerPrefs.GetInt("QuestActionIndex");
player.transform.position=new Vector3(x, y, 0);
questManager.questId = questId;
questManager.questActionIndex = questActionIndex;
questManager.ControlObject();
}
플레이어X 키가 PlayerPrefs에 없으면( 저장된게없으면) 바로 리턴해준다.
x,y,id,,여기에 저장했던 값을 불러온다.
그리고 위치를 x,y,0으로 설정하고 각각에 부여한다.
ControlObject함수는 동전 퀘스트 관련 정보이다.
private void Start()
{
GameLoad();
questTalk.text=questManager.CheckQuest();
}
Start함수에서 GameLoad를 실행시킨다.
그리고 퀘스트 확인을할수있도록 questTalk의 텍스트부분에 퀘스트 이름을 저장한다.
'unity' 카테고리의 다른 글
[unity] - 물리 퍼즐게임 만들기 ( 수박게임 ) (0) | 2024.08.13 |
---|---|
[unity]- 기초 입력 함수, 목표지점 이동,deltaTime (0) | 2024.07.09 |
[unity] - 2d 탑다운 [ 대화창,초상화,타이핑 이펙트 ] (0) | 2024.07.04 |
[unity]- 2d 탑다운 [ 퀘스트 ] (0) | 2024.07.03 |
[unity]- 2d 탑다운 [ npc와 대화 + 초상화 ] (0) | 2024.07.02 |