02/23 본캠프 #42

guno park·2024년 2월 23일
0

본캠프

목록 보기
42/77

Sparta bank 바꿔보기

기존에 json으로 Local Path에 저장했던 것을 웹에 올리는 것을 목표로 바꿔보고있다.

바꿔야될 부분은 크게 3부분으로 회원가입, 회원가입 시 ID 존재유무 파악, 로그인 이렇게 보고 있다.
그 중 회원가입 부분은 구현되었고 나머지 부분을 주말에 천천히 해보려한다.

회원가입하기

기존에는 회원가입 시 입력 조건이 다 일치하면 UserData라는 클래스에 값을 저장하고 jsonConvert하여 저장하는 방식을 사용했다.

이번에는 UserData에 저장하는 것까지는 동일하나, 이 후 웹에 Post하여 저장되도록 바꾸었다.

 UnityWebRequest unityWebRequest = null;
        
       
string url = "웹 주소";
        
        
var savedata = JsonConvert.SerializeObject(newData, Formatting.Indented);
unityWebRequest = UnityWebRequest.PostWwwForm(url, savedata);
unityWebRequest.SetRequestHeader("Content-Type","application/json");
//type은 내가 어떤 타입으로 전달하겠다, value는 json으로 저장을 하겠다
//기본일 때는 안해도되는데 json일때는 따로 설정을 해주어야한다.
byte[] sendData = new UTF8Encoding().GetBytes(savedata);
unityWebRequest.uploadHandler = new UploadHandlerRaw(sendData);
//서버가 어떻게 만들어지는지에 따라 다름. 
                        
yield return unityWebRequest.SendWebRequest();
 
if(unityWebRequest.isNetworkError) {
	Debug.Log(unityWebRequest.error);
	}
	else {
		Debug.Log("Form upload complete!");
		string responseText = unityWebRequest.downloadHandler.text;
		Debug.Log("Response received: " + responseText);
        }        

텍스트를 전달할지 이미지 같은 파일을 전달할지에 따라달라진다.
여기서는 텍스트만 전달하기에 uploadHandlerRaw를 사용해 전송한다.
회원가입에 성공하면

이렇게 웹에 해당 아이디를 파일이름으로 가지는 json데이터가 저장된다.

DB 특강

엑셀 시트를 Scriptable Object로 활용하는 법을 다룬다.
excel importer를 설치한 이후 가능하다.

하는 법

  1. 사용할 엑셀 파일을 만들어 유니티 프로젝트에 추가한다.
  2. 엑셀 데이터에 맞게 Entitiy 클래스를 정의하고 꼭 꼭 Serializable 어트리뷰트를 추가한다.
  3. 추가한 엑셀 파일을 선택하고 우클릭하여 Create/ExcelAssetScript를 선택한다.
  4. 만들어진 스크립트에서 주석을 지우고 제네릭에 내가 만든 타입을 지정해준다.
  5. 엑셀 파일을 다시 선택하고 Reimport를 누른다.

완성

DB 활용법

보통 id를 통해 관리하며, 이름 설명 등 간단한 표현부터 아이템 타입이나 등급 등 값에 맞는 행동을 취할 수도 있으며, 해당 아이템의 SpritePath를 입력해 동적으로 아이템 이미지를 관리할 수도 있다.(다 쓰면 파괴하기)

또한 강화하는 방식에도 사용할 수 있는데,
강화별 증가 수치를 DB에 명시하는 방법도 있고, ID를 다르게 하여 강화 수치에 따라 개별의 아이템으로 만들어 줄 수도 있다.
전자는 일정 수치로 증가하며, 후자의 경우 다양한 업그레이드 방식을 만들 수 있다.

ID

id를 단순히 1,2,3 이렇게 관리하는 것보다 8자리(byte)의 형태로 관리하여 맨 앞은 메인 카테고리, 5번째는 서브 카테고리, 나머지는 개별 인덱스의 형식으로 관리해주는 편이 좋다.

0개의 댓글