본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
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 통신 하는 방법을 배운건 좋았지만 그 이외에는 좀 많이 흥미가 떨어졌다. 아마 필요한건 아마 엄청엄청 나중일거라 필요할때 듣는게 더 효율적일 것 같아서 건너뛰었다. 지금 들어도 그때 가서 기억 안나서 다시 들어야 할것같으니까...
근데 확실히 환경별로 변수 설정하는거랑 데이터 저장하는건 바로 필요한 내용이라 재밌게 들었다. 근데 파일로 접근하는거보다 데이터베이스에서 접근하는게 더 편하지 않을까 싶었는데 그 내용이 없는게 좀 아쉬웠다. 나중에 따로 알아보고 구현해야겠다.
'유니티' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 11일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기 (0) | 2025.11.22 |
|---|---|
| 패스트캠퍼스 환급챌린지 10일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기 (1) | 2025.11.21 |
| 패스트캠퍼스 환급챌린지 8일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기 (0) | 2025.11.19 |
| 패스트캠퍼스 환급챌린지 7일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기 (0) | 2025.11.18 |
| 패스트캠퍼스 환급챌린지 6일차 : 한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지 강의 후기 (0) | 2025.11.17 |