본문 바로가기
유니티 최고/유니티 개념

유니티(Unity) 특수 폴더 & 저장 경로 읽어오기

by Lee_story_.. 2023. 5. 9.
728x90

유니티에서 파일을 읽어오기위해서 많은 방법들이 있습니다.

그 중 최근에 <Resources.Load> 라는 함수를 사용하여 json파일을 불러오며 유니티에 다양한 특수폴더들과 위치접근 방법들이 있는것을 알게되어 정리하게되었습니다!

 

 

먼저 특수 폴더들을 정리해 보자면

 

Assets 폴더

-가장 기본적인 폴더! 

-모든 에셋들이 들어있는 폴더 

-기본생성

Editor /Editor Default Resources 폴더

-유니티 에디터에서만 사용되는 폴더

-만약 스크립트가 에디터의 네임스페이스나 클래스들을 사용한다면 이 폴더에 위치해야함!

-경로는 \Assets\Editor

 

Gizmos 폴더

-"기즈모"란 간단한 장치라는 뜻으로 에디터 상에 사용하고 있는 이동툴/ 회전툴 등이 포함되어있음

-씬에 아이콘을 배치하거나 마커를 사용하고 싶을때 사용

-에셋 스토어에서 다양한 작업툴들을 판매하는데 이를 다 기즈모라고 함!

 

Plugins 폴더

-기본적인 유니티 기능에서 좀 더 확장하여 사용할 수있도록 하는 플러그인이 모여있는 폴더

 

Resources 폴더

-파일 경로접근시에 사용하는 폴더!

-프로젝트 빌드시에 Resources.Load 함수를 통해 불러올 수 있음!

 

 

StreamingAssets 폴더

-빌드할 기기에 그대로 복사하여 사용할수 있도록 하는 폴더

-Application.streamingAssetsPath을 사용하여 경로 찾기 가능!

 

 

공식 문서!

 

특수 폴더 이름 - Unity 매뉴얼

보통 Unity 프로젝트를 구성하기 위해 폴더를 생성할 때 원하는 이름은 무엇이든 선택할 수 있습니다. 그러나 몇 가지 폴더 이름의 경우 Unity는 해당 폴더의 내용이 특별한 방식으로 취급되어야

docs.unity3d.com

 

 

모두 필요로 하는것들이지만 가장 활용도가 높은 폴더는 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;

 

 

 

더 추가할게 생기게 되면 바로바로 추가하도록 하겠습니다! 일단 마무리!

 

 

 

참고 블로그들

 

유니티 데이터 패스(Application.dataPath, ) 정리 와 예약 폴더들(Resources, )

유니티 데이터 패스 정리 테스트한 기기에 따라 결과가 다를 수 있음 [윈도우 에디터]Application.persistentDataPath : 사용자디렉토리/AppData/LocalLow/회사이름/프로덕트이름 파일 읽기 쓰기 가능Application.

3dmpengines.tistory.com

 

 

 

 

틀린점이 있다면 댓 달아주세요!

댓글