유니티에서 파일을 읽어오기위해서 많은 방법들이 있습니다.
그 중 최근에 <Resources.Load> 라는 함수를 사용하여 json파일을 불러오며 유니티에 다양한 특수폴더들과 위치접근 방법들이 있는것을 알게되어 정리하게되었습니다!
먼저 특수 폴더들을 정리해 보자면
Assets 폴더
-가장 기본적인 폴더!
-모든 에셋들이 들어있는 폴더
-기본생성
Editor /Editor Default Resources 폴더
-유니티 에디터에서만 사용되는 폴더
-만약 스크립트가 에디터의 네임스페이스나 클래스들을 사용한다면 이 폴더에 위치해야함!
-경로는 \Assets\Editor
Gizmos 폴더
-"기즈모"란 간단한 장치라는 뜻으로 에디터 상에 사용하고 있는 이동툴/ 회전툴 등이 포함되어있음
-씬에 아이콘을 배치하거나 마커를 사용하고 싶을때 사용
-에셋 스토어에서 다양한 작업툴들을 판매하는데 이를 다 기즈모라고 함!
Plugins 폴더
-기본적인 유니티 기능에서 좀 더 확장하여 사용할 수있도록 하는 플러그인이 모여있는 폴더
Resources 폴더
-파일 경로접근시에 사용하는 폴더!
-프로젝트 빌드시에 Resources.Load 함수를 통해 불러올 수 있음!
StreamingAssets 폴더
-빌드할 기기에 그대로 복사하여 사용할수 있도록 하는 폴더
-Application.streamingAssetsPath을 사용하여 경로 찾기 가능!
공식 문서!
모두 필요로 하는것들이지만 가장 활용도가 높은 폴더는 resources폴더와 streamingAssets폴더였습니다.
각각 프로젝트 빌드단계에서 한 파일을 경로상에서 읽어올때 필요한 폴더로
경로만 있으면 그 파일을 불러오고 수정할 수 있었습니다.
두 폴더의 차이는 저장방법에 있는것 같습니다.
Resources 폴더는 게임 빌드 파일에 리소스를 압축하여 포함시키고
StreamingAssets 폴더는 그대로 유지하면서 게임 빌드 파일에 포함시키지 않습니다.
이게 가장 핵심!
여기서 부터는 위치 접근 방법에 대해서 알아보겠습니다.
저장경로? 평소대로 C:\~~~~\~~~~\~~~~\~~~~\UnityBlog 이렇게 사용하면 안될까?
>> 에디터 상에선 문제가 없습니다. 하지만 빌드시에는 그 빌드 파일의 위치, 저장위치에 따라 달라지므로
불러올 필요가 있습니다!
방법으로는 3가지가 있습니다.
Application.dataPath
-현재 실행중인 프로젝트의 위치입니다.
-기본적으로 프로젝트의 Assets 폴더의 경로를 반환합니다.
Application.streamingAssetsPath
- StreamingAssets 폴더의 경로를 반환합니다. >> 위의 그 StreamingAssets 폴더 맞습니다!
Application.persistentDataPath
-게임 실행 중에 생성된 데이터 파일이 저장되는 경로를 반환합니다.
에디터 상에서는 아래와 같은 출력을 볼수 있습니다.
그리고 휴대폰에 빌드시에는 아래처럼 나오게됩니다.
이제 조금 간단한 활용법..?
resources폴더와 streamingAssets폴더에 각각 json파일이 있다고 하면 아래같이
Resources
확장자 x / Resources 하위 경로부터
Resources.Load<TextAsset>("Json/SchoolLocationJson");
StreamingAssets
- 안드로이드일 경우 파일로 받아오는게 아닌 WWW를 통해 읽어 올 수 있습니다!
>>
WWW reader = new WWW(FileLocation);
string str = reader.text;
var data = JsonUtility.FromJson<T>(str) as T;
더 추가할게 생기게 되면 바로바로 추가하도록 하겠습니다! 일단 마무리!
참고 블로그들
틀린점이 있다면 댓 달아주세요!
'유니티 최고 > 유니티 개념' 카테고리의 다른 글
유니티(Unity) 인스펙터창 관리 / [HideInInspector] ? , [SerializeField] ? (1) | 2023.06.08 |
---|---|
유니티(Unity) async await이란 & 동기식, 비동기식 작업 (0) | 2023.06.01 |
유니티(Unity) 코루틴(Coroutine) 이란 & 사용해보기 (1) | 2023.05.30 |
유니티(Unity) 싱글톤(Singleton) 이란 & 사용해보기 (씬이동시 데이터 유지방식) (0) | 2023.05.25 |
유니티(Unity) 주요 이벤트 함수의 실행 순서 (0) | 2023.05.15 |
댓글