기존에 모바일에서 저장 / 로드 용으로 쓰던 스크립트 가져와서 개량해서 사용했는데 유니티에서 테스트하면 저장 로드가 매우 잘되지만 모바일로 빌드하고 폰이나 에뮬돌리면 로드가 안됨
그리고 Resources 경로안에 json 파일 읽어오도록 해놨는데 해당 파일을 예전에 만들던 어플은 설치해도 정삭적으로 남아있는데 새로 만드는거는 파일 넣어둔게 빌드하고 apk 설치한 뒤 경로 들어가보면 지워져있음
예전 어플은 무난하게 설치되는데 새로 만든 어플은 'Play 프로텍트에 의해 차단됨' 떠서 무시하고 설치하는데 이것때문에 그런건지 아무튼 파일 읽기쓰기? 그쪽 권한이 안주어지게 되있는지 안되는데 해결법좀 알려주세요.
File.WriteAllText(Path.Combine(Application.persistentDataPath, fileName + ".json"), jsonData);
위의 코드로 저장함
경로 자체가 Pc와 모바일 다 다름 안드로이드 자체 로컬 위치 변경을 수정해야함
https://wergia.tistory.com/92
안드로이드 자체에서 저경로로 Resources 폴더가 있는지 확인하고 없으면 따로 생성을 해줘야함
글보면 모바일 경로로 코드도 적어놨고 이전에 다른 어플에서 사용하던 잘되는 코드 가져와서 쓴거라고 적어뒀습니다만..?
Resources 폴더는 있는데 이유는 모르겠지만 Resources 안에 넣은 파일이 빌드하고 설치하면 없어짐
코드의 문제라기보단 무슨 시스템적인 문제같다고 생각함..
Resources란 폴더 자체가 안드로이드 자체에서는 없음 Resources 에셋 자체가 아카이브로 압축되서 기존에 깔려 잇는데 Resources폴더가 생성된 상태라 경로 탐색에 문제가 없어서 그곳에서 저장 로드 해지는거임 새로 깔시에는 Resources 폴더가 없음 string sDirPath; sDirPath = Application.persistentDataPath + "/Json"; DirectoryInfo di = new DirectoryInfo(sDirPath); if (di.Exists == false) { di.Create(); }
안드로이드에선 File클래스 작동 안함 resources 사용하셈
Resources 는 읽기 전용이라 File 클래스 써야지 저장도 할 수 있음 테스트 해본다고 간단한 클래스만들고 저장 로드하니깐 되던데 기존에 만들어둔 플레이어정보는 왜 저장이랑 로드가 안되는지 모르겠음
아 내가 내용을 잘못 읽었었네.. 세이브 로드 되도록이면 직렬화 사용하는게 좋음 호환이 잘 안되서 File로는 불가능함 경로 뿐만이 아니라 저장 형식도 달라져서 읽기 자체가 안됨
안드로이드에서는 File클래스를 이용해 저장하고 불러오는게 불가능함 안드로이드 빌드 중에 에셋이 압축되는데 그렇게 되면 저장된 파일이 에셋안으로 들어갈 수가 없음 안드로이드 전용 저장공간이 따로 있는데 이거 경로 설정 잘해야할거임 근데 이방법은 Resoureces로 불러올 수가 없음 즉 해당 방법으로 원하는 결과를 얻을 수 없을거임
위에 댓글에 설명되있었네
[ContextMenu("To Json TestData")] void saveTestDataToJson() { string jsonData = JsonUtility.ToJson(testData, true); string path = Path.Combine(Application.persistentDataPath, "testData.json"); File.WriteAllText(path, jsonData); }
[ContextMenu("From Json TestData")] void loadTestDataFromJson() { string path = Path.Combine(Application.persistentDataPath, "testData.json"); string jsonData = File.ReadAllText(path); testData = JsonUtility.FromJson(jsonData); } 위에 코드 모바일에서 실행잘되던데 File 쓸수있는거아녜여?
ㅈㅅ 파일 클래스는 작동 하는데 파일을 저장 할 때 압축 안에 들어가지 못해서 저장된 애가 읽히는게 안된다는 소리였음 이걸 해결할 기술적 능력이 안됨
저장하는 방식이 Assets 안에 저장하는 방식이면 file클래스로 읽는게 안될거임
위에코드로 실행하면 모바일 환경에서 읽기 쓰기 문제없이 됨
그리고 Resources는 파일 이름 못읽고 안에있는 내용물만 읽을 수 있음(정리가 불가능함)