GameManagerEx 스크립트 파일에서 로컬 저장 기능 구현을 위해 path 변수를 선언하는 과정에서 에러 메시지가 발생하였다
public string _path = Application.persistentDataPath + "/SaveData.json";
UnityException: get_persistentDataPath is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'Managers' on game object '@Managers'.
See "Script Serialization" page in the Unity Manual for further details.
우선 Script Serialization 문서를 참고하라길래 읽어보았다
https://docs.unity3d.com/Manual/script-Serialization.html
특정 함수의 경우 생성자에서 호출할 수 없다고 하는데, 클래스 변수로 경로를 입력한 게 문제인 듯하다
로컬 저장 기능과 관련하여 다른 글들을 찾아 보니, Save와 Load 함수를 호출할 때마다 path 경로를 초기화시켜주는 방식으로 구현한 경우가 몇 보여서
위와 같이 코드를 수정하였더니 일단은 에러 없이 동작한다
'Programing > Unity(C#)' 카테고리의 다른 글
[Error] UnassignedReferenceException (0) | 2024.03.21 |
---|---|
[C#] Action Invoke로 인자 전달하기 (0) | 2024.03.18 |
[Unity] Rect Transform Animation Position 변경하기 (0) | 2024.03.18 |
[Unity] AddListener로 이벤트 추가하기 (0) | 2024.03.17 |
[C#] const, readonly, static (0) | 2024.03.14 |