[Unity] Unity 기초강의 내용 정리 (3-10강 ~ 3-11강)

[Unity] Unity 기초강의 내용 정리 (3-10강 ~ 3-11강)

educast 나동빈 님의 <Mobile Defence Game 제작으로 배우는 Unity 기초> 강의를 듣고 내용 정리.

———-

3-10. Button Practice

PlayerPrefs[플레이어 프립스] 기능 배우기 (게임 세이브 데이터 저장/로드 기능)

1. 좌측 하이어라키 뷰에 캔버스를 생성

Render Mode : Screen Space – Camera

카메라는 메인카메라 선택

2. 텍스트를 하나 만들고 Anchors 중앙으로 설정 (Alt 키 누르고 중앙 클릭)

이름을 Main Text 로 지정

크기 : 800 x 200

글자 중앙 정렬

Vertical OverFflow : overflow

Text 내용 : 현재 레벨은?

폰트 사이즈 80

3. 캔버스 안에 버튼을 생성

크기 : 600 x 200

색상을 빨간색으로 수정

Text 내용 : Level Up

폰트 사이즈 80

글자 중앙 정렬

버튼을 좌측 상단으로 이동시키기

4. 버튼을 복사해서 4개로 만든다.

버튼을 좌측 상단부터 배치한다.

(북서) Save

(북동) Level Up

(남서) Saved Data Reset

(남동) Load

버튼 객체명과 Text 내용을 동일하게 변경한다.

5. Scripts 폴더를 만들고 PlayerPrefTest 라는 이름의 C# 스크립트 생성

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class PlayerPrefTest : MonoBehaviour {

    public int level;

   

 void Start () {

        level = 0; 

 }

 

 void Update () {

  

 }

    public void LevelUp() {

        // using UnityEngine.UI; 임포트 해야 GetComponent<Text>() 사용 가능

        level += 1;

        gameObject.GetComponent<Text>().text = “현재 레벨은” + level + “입니다.”;

    }

    public void Save() {

    }

    public void Load() {

    }

    public void ResetAll() {

    }

}

6. 각 버튼에 해당하는 함수를 매핑한다.

좌측 하이어라키 뷰에서 버튼을 선택하고 우측 인스펙터 뷰 OnClick 항목 하단 [+] 버튼을 클릭.

오브젝트에 Main Text를 드래그앤드랍해서 넣고 Function 은 각 버튼에 맞게 선택해주면 됨.

ex) Saved Data Reset 버튼은 PlayerPrefTest – ResetAll()

7. 저장

PlayerPrefs.Set자료형(문자열키값, 저장하려는값)

ex 1) PlayerPrefs.SetInt(“내마음의비밀번호”, 486);

ex 2) PlayerPrefs.SetString(“내마음의비밀번호”, 486);

ex 3) PlayerPrefs.SetFloat(“내마음의비밀번호”, 4.86f);

PlayerPrefs.GetInt(문자열키값, 기본값);

ex 1) PlayerPrefs.GetInt(“내마음의비밀번호”, 0);

플레이어 프립스는 보안성이 높지는 않음.

보통 자동 로그인을 위한 아이디 등을 저장함.

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class PlayerPrefTest : MonoBehaviour {

    public int level;

   

 void Start () {

        level = 0; 

 }

 

 void Update () {

  

 }

    public void LevelUp() {

        // using UnityEngine.UI; 임포트 해야 GetComponent<Text>() 사용 가능

        level += 1;

        gameObject.GetComponent<Text>().text = “현재 레벨은 ” + level + “입니다.”;

    }

    public void Save() {

        PlayerPrefs.SetInt(“nowLevel”, level);

    }

    public void Load() {

        level = PlayerPrefs.GetInt(“nowLevel”, 0);

        gameObject.GetComponent<Text>().text = “현재 레벨은 ” + level + “입니다.”;

    }

    public void ResetAll() {

        // PlayerPrefs 에 있는 모든 데이터 삭제

        PlayerPrefs.DeleteAll();

    }

}

———-

3-11. Interaction Component – Input Field

1. 좌측 하이어라키 뷰에 캔버스를 생성

Render Mode : Screen Space – Camera

카메라는 메인카메라 선택

2. 캔버스 안에 인풋필드 만들기

크기 : 600 x 200

Anchors 중앙으로 설정 (Alt 키 누르고 중앙 클릭)

폰트사이즈 : 80

가운데 정렬

플레이스 홀더 : 플레이어에게 어떤 값을 넣으라고 알려주는 지시자 역할을 함. [힌트]라고도 불림.

Placeholder 텍스트 : 아이디를 입력해주세요.

3. 캔버스 안에 텍스트를 만든다.

크기 : 600 x 200

인풋필드 아래에 위치시킨다.

(겹치는 것이 아니라 아래 위치시키기)

4. Scripts 폴더 안에 InputCheckTest 라는 이름의 C# 스크립트 생성

해당 스크립트를 텍스트 오브젝트에 드래그앤드랍하여 Add Component 한다.

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class InputCheckTest : MonoBehaviour {

    public InputField idInputField;

   

    void Start () {

  

 }

 

 

 void Update () {

  

 }

    public void InputCheck() {

        if (idInputField.text.Length < 6) {

            gameObject.GetComponent<Text>().text = “아이디는 최소한 6자 이상 입력해주세요.”;

        } else {

            gameObject.GetComponent<Text>().text = “아이디의 길이가 적절합니다.”;

        }

    }

}

5. 메인카메라 배경색을 하얀색으로 변경

6. InputField 의 On Value Changed 에 Text 객체를 드래그앤드랍해서 매핑하자.

Text 에 드래그앤드랍 또는 Add Component 로 InputCheckTest 스크립트를 추가하자.

7. Text 선택하고 우측 하이어라키 뷰에서 InputField 값 채워준다.

하이어라키 뷰의 InputField 를 드래그앤드랍하면 된다.

On Value Changed : 인풋필드의 입력값이 바뀌었을 때

On End Edit : 텍스트 입력을 마치고 엔터키를 눌렀을 때 실행

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class InputCheckTest : MonoBehaviour {

    public InputField idInputField;

   

    void Start () {

  

 }

 

 

 void Update () {

  

 }

    // On Value Changed : 인풋필드의 입력값이 바뀌었을 때

    public void InputCheck() {

        if (idInputField.text.Length < 6) {

            gameObject.GetComponent<Text>().text = “아이디는 최소한 6자 이상 입력해주세요.”;

        } else {

            gameObject.GetComponent<Text>().text = “아이디의 길이가 적절합니다.”;

        }

    }

    // On End Edit : 텍스트 입력을 마치고 엔터키를 눌렀을 때 실행

    public void IdCheck() {

        if (idInputField.text == “handsome”) {

            gameObject.GetComponent<Text>().text = “로그인 성공!”;

        }

    }

}