유니티

패스트캠퍼스 환급챌린지 9일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기

hokim 2025. 11. 20. 21:52

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4oKQD6b

 

공부시작
공부 종료(중간에 밥먹고 다른일 하다 마저 들음 ㅠ)
수강인증
학습 인증샷

오늘은 프로젝트 아키텍쳐를 좀 더 들었다.

네트워크 연동 환경 구축이랑 Dev/Stage/Release 까지는 재밌었는데 Config패킷/점검/업데이트 내용은 내가 만들고 싶은 게임에 필요한 내용이 아니어서 너무 집중이 안됐다... 결국 이 부분은 건너 뛰고 로컬저장/데이터 자료구조를 들었다.

 

네트워크 연동 환경 구축

여기서는 서버에 요청날리고 응답 받는 방법을 배웠다.

 

UnityWebRequest request = UnityWebRequest.Get(apiUrl); 로 요청을 날리고 

yield return request.SendWebRequest(); 으로 요청의 응답을 기다린 다음 

string jsonData = request.downloadHandler.text; 으로 응답을 받는다.

 

+) 받아온 jsonData를 클래스 인스턴스로 만들고 싶다면?

JsonUtility.FromJson<바꿀 타입>(request.downloadHandler.text); 으로 바꿔주면 된다.

 

 

Dev/Stage/Release

Player Settings > Other Settings > Scripting Define Symbols에서 DEV/STAGE/RELEASE 중 하나를 추가한다.

아래처럼 코드를 작성하면 설정한 환경 값에 따라 ENV 값이 설정된다.

public class Config
{
    public const string API_URL = "https://jsonplaceholder.typicode.com/";

#if STAGE
    public const ENVIRONMENT_TYPE ENV = ENVIRONMENT_TYPE.STAGE;
#elif PRODUCTION
    public const ENVIRONMENT_TYPE ENV = ENVIRONMENT_TYPE.PRODUCTION;
#else
    public const ENVIRONMENT_TYPE ENV = ENVIRONMENT_TYPE.DEV;
#endif
}

 

DEV로 설정하면 이렇게 DEV가 활성화 되고,

 

STAGE를 설정하면 이렇세 STAGE가 활성화된다.

 

 

로컬 저장/데이터 자료구조

1. JSON으로 저장

data는 User 같은 어떤 클래스라고 가정한다.

 

  • 세이브
    • string jsonStr = JsonUtility.ToJson(data); 으로 JSON으로 만든다.
    • File.WriteAllText(filePath, jsonStr);으로 파일 위치를 지정해 바로 쓴다.

  • 로드
    • string fileStr = File.ReadAllText(filePath);으로 파일 내용을 읽어온다.
    • T data = JsonUtility.FromJson<T>(fileStr); 으로 읽어온 json을 인스턴스로 만든다.

 

+) 파일 위치는 주로 Application.persistentDataPath 안에 위치를 지정해 사용한다.

 

 

2. 직렬화로 저장

json은 사람이 읽을 수 있는 형태로 제공되므로 사이즈가 크다. 대신 바이트 스트림으로 사람이 읽을 수는 없지만 작은 사이즈로 저장 할 수 있다.

 

직렬화로 저장/로드 하려면 반드시 오브젝트화 하려는 클래스에 [Serializable]을 붙여주어야 한다.

 

  • 세이브
    • 파일스트림을 생성해서 버퍼에 직렬화해서 쓴다.
using (FileStream file = File.Create(filePath))
{
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(file, data);
}



  • 로드
    • 파일을 파일스트림으로 읽어서 역직렬화해서 인스턴스화 한다.
using (FileStream file = File.Open(filePath, FileMode.Open))
{
    BinaryFormatter bf = new BinaryFormatter();
    T data = bf.Deserialize(file) as T;

    return data;
}

 

 

난 온라인게임 말고 스팀게임같은거 만들고 싶어서 기본적으로 api 통신 하는 방법을 배운건 좋았지만 그 이외에는 좀 많이 흥미가 떨어졌다. 아마 필요한건 아마 엄청엄청 나중일거라 필요할때 듣는게 더 효율적일 것 같아서 건너뛰었다. 지금 들어도 그때 가서 기억 안나서 다시 들어야 할것같으니까...

근데 확실히 환경별로 변수 설정하는거랑 데이터 저장하는건 바로 필요한 내용이라 재밌게 들었다. 근데 파일로 접근하는거보다 데이터베이스에서 접근하는게 더 편하지 않을까 싶었는데 그 내용이 없는게 좀 아쉬웠다. 나중에 따로 알아보고 구현해야겠다.