[Unity] PC 세이브 데이터 Android로 옮기기
![[Unity] PC 세이브 데이터 Android로 옮기기](/_next/image?url=https%3A%2F%2Fdata.develog.develrocket.com%2Fupload%2Fdevelog%2Fmuchan%2F1792206352286-hd4xz4%2F_____2026-10-17_114953.png&w=3840&q=75)
개요
포트폴리오 게임 영상 찍어야 하는데 일단 안드로이드 게임이니까 핸드폰으로 찍어야겠다 생각했습니다. 근데 빌드를 하고 보니 처음부터 시작해야하는데, 제가 테스트용 치트들을 많이 안만들어서 막막한 상황이었습니다. 찾아보니 PC 세이브 데이터를 Android로 옮길 수 있는 방법이 있다고 해서 시도해봤습니다.
안드로이드 빌드하기
우선 위 링크에서 휴대폰에서 USB 디버깅을 켜고 Android 플랫폼으로 바꿉니다

설정은 사진처럼 맞췄고 Build And Run을 눌렀습니다.
이번에는 휴대폰에 직접 설치해 촬영할 목적이므로 APK로 빌드하고, 개발 및 프로파일링 옵션은 껐습니다.
설정을 마친 뒤 Build And Run을 눌러 APK를 저장했습니다. 빌드가 완료되면 연결된 휴대폰에 게임이 설치되고 실행됩니다.
이 시점에는 PC의 세이브가 전달되지 않았으므로, 별도로 세이브 파일을 복사해야 합니다.
세이브 데이터 옮기기
현재 프로젝트는 Application.persistentDataPath 아래의 Save 폴더에 SaveAuto.json이라는 이름으로 진행 상황을 저장합니다.
PC와 안드로이드 모두 같은 저장 코드를 사용하지만, 실제 저장 위치는 서로 다릅니다. 따라서 PC의 세이브 파일을 휴대폰에서 사용하는 저장 위치로 복사해 주면 됩니다.
파일 전송에는 ADB(Android Debug Bridge)를 사용했습니다. ADB는 PC에서 연결된 안드로이드 기기에 명령을 보내거나 파일을 전송할 수 있는 도구입니다.
1. ADB 경로 설정
PC에서 PowerShell을 열고, Unity의 Android SDK에 포함된 adb.exe 경로를 변수에 저장했습니다.
$adb = 'C:\Program Files\Unity\Hub\Editor\6000.3.15f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe'
$adb는 실행 파일의 경로를 저장하는 변수입니다. 이후에는 긴 경로 대신 $adb를 사용하면 됩니다.
Unity 버전과 설치 위치에 따라 경로가 달라질 수 있으므로, 자신의 PC에 설치된 경로로 수정해야 합니다.
2. 실행 중인 게임 종료
!! 아래 경로는 제 프로젝트 기준이며, 자신의 환경에 맞게 수정해야합니다 !!
& $adb shell am force-stop com.DevelRocket.SevenDays
세이브 파일을 복사하기 전에 휴대폰에서 실행 중인 게임을 종료했습니다.
&는 변수에 저장된 경로의 프로그램을 실행하는 PowerShell 연산자입니다.shell은 휴대폰에서 명령을 실행하도록 합니다.am force-stop은 지정한 앱을 완전히 종료합니다.com.DevelRocket.SevenDays는 제 게임의 패키지명입니다.
이 명령을 입력했을 때 휴대폰의 게임이 꺼지는 것은 정상입니다. 게임을 종료해 두고 파일을 복사한 뒤 다시 실행하면, 복사한 세이브를 읽도록 할 수 있습니다.
3. 세이브 폴더 생성
& $adb shell mkdir -p /sdcard/Android/data/com.DevelRocket.SevenDays/files/Save
휴대폰의 앱 저장 위치에 Save 폴더를 생성했습니다.
mkdir는 폴더를 만드는 명령이고, -p 옵션은 필요한 상위 폴더도 함께 생성합니다. 이미 폴더가 있다면 그대로 사용할 수 있습니다.
여기서 폴더 위치와 이름은 게임의 저장 코드에 맞춰야 합니다.
4. PC 세이브 파일 전송
& $adb push "$env:USERPROFILE\AppData\LocalLow\MuchanCompany\7 Days\Save\SaveAuto.json" /sdcard/Android/data/com.DevelRocket.SevenDays/files/Save/SaveAuto.json
push는 PC의 파일을 휴대폰으로 복사하는 명령입니다.
adb push <PC 파일 경로> <휴대폰 저장 경로>
첫 번째 경로에는 PC의 세이브 파일을, 두 번째 경로에는 휴대폰에서 세이브 파일을 읽을 위치를 지정했습니다.
$env:USERPROFILE은 현재 Windows 사용자 폴더를 의미합니다. 제 PC에서는 C:\Users\muchan에 해당합니다.
PC 경로의 7 Days에는 공백이 있으므로, 경로 전체를 큰따옴표로 감쌌습니다.
휴대폰의 같은 위치에 기존 세이브가 있다면 덮어쓰므로, 필요한 기록이 있다면 먼저 백업해야 합니다.
5. 전송 결과 확인
명령 실행 후 다음 메시지가 출력됐습니다.
1 file pushed, 0 skipped. 0.2 MB/s (1372 bytes in 0.006s)
1 file pushed는 파일 1개가 정상적으로 전송됐다는 뜻이고, 0 skipped는 건너뛴 파일이 없다는 뜻입니다.
이후 휴대폰에서 게임을 다시 실행하고 이어하기를 선택해, PC에서 저장한 진행 상황이 정상적으로 불러와지는지 확인하면 됩니다.
결과

일단 저는 모바일 환경에서 이어하기 버튼이 나오고 게임도 정상 실행 되지만 일단 이미지 옮기기가 귀찮아서 대충 사진만 올렸습니다. 이어하기는 정상적으로 동작합니다.
& $adb shell am force-stop com.DevelRocket.SevenDays
& $adb push "$env:USERPROFILE\AppData\LocalLow\MuchanCompany\7 Days\Save\SaveAuto.json" /sdcard/Android/data/com.DevelRocket.SevenDays/files/Save/SaveAuto.json
그리고 세이브 데이터 바꿀때마다 해당 명령어를 통해 원하는 상황을 안드로이드에서 바로 시작할 수 있습니다.


![[Unity] 제네릭 박싱 예방](https://data.develog.develrocket.com/upload/develog/gmumdev/1792123312021-bhxx2i/_____.png)