이 자습서는 Unity 게임에서 저장/로드 게임 기능을 구현하는 방법을 보여줍니다. 레벨, 위치 및 통계와 같은 플레이어 데이터를 저장합니다
테스트를 위해 이전 크로스 스토니 저장 자습서에서 프로젝트를 사용할 수 있습니다.
주요 개념 :
직렬화 : Unity는 .NET/mono Serialization을 사용하여 .NET 객체를 이진 형태로 하드 드라이브에 씁니다.
저장된 데이터 :
는 (레벨, 위치 등), 장면 ID 및 플레이어의 현장 위치를 포함합니다.
저장 : 플레이어 데이터를 가져 와서 파일로 직렬화하십시오.
로드 : 저장 파일을 찾아서 일반 객체로 삼아 데이터 클래스 유형에 시전합니다. .
장면 및 위치 :
장면 ID에 대한 정수를 추가하고 플레이어의 클래스에 대한 플레이어의 위치에 3 개의 부유물 (x, y, z)을 추가합니다.
직렬화 함수 : 저장 및 하중을 처리하기 위해 함수 ( 또는 이와 유사한)를 만듭니다. 결정적으로, 사용 후
객체를 닫습니다
다운로드 : -
이전 기사 : Unity의 장면간에 데이터를 저장합니다
[Github 저장소]
[zip 다운로드]
완성 된 프로젝트 다운로드 (이 기사의 끝에서)
자세한 설명 :
직렬화는 .net 객체를 원시 바이너리 데이터로 디스크에 씁니다. 클래스 인스턴스를 저장하는 것으로 생각하십시오. -
데이터 저장 :
플레이어 데이터가 포함 된 클래스를 얻습니다
하드 드라이브의 알려진 파일로 직렬화하십시오.
PlayerStatistics
- 로드 데이터 :
저장 파일을 찾으십시오
내용을 일반
- 를 데이터 클래스 유형으로 캐스트하십시오
저장하려는 데이터 :
-
기존 데이터.
장면 ID (정수).
플레이어의 위치 (3 개의 부동물 : x, y, z).
준비 :
PlayerStatistics
우리는 다음을 해결해야합니다
장면 ID : - 정수 변수를
플레이어 위치 : 3 개의 플로트 (x, y, z)를 GlobalObject (변환 및 vector3는 직접 직접화 할 수 없음)를 추가합니다.
저장/로드 절차 :
Stream
핫키를 사용합니다 (예 : F5, 저장, F9로드).
새로운 게임/로드 게임 : 에서 부울을 사용하여 장면이 저장에서로드되었는지 또는 신선한 시작 여부를 추적합니다.
로직 흐름도 (PlayerControl 클래스) :
키 포인트 :
공개 부울 ()과 저장된 플레이어 데이터 사본이 있습니다.
's 저장된 데이터를로드할지 여부를 결정하려면 를 확인하십시오.
코드 :
1. - 클래스 :
GlobalObject
IsSceneBeingLoaded
2. 직렬화 함수 () :
-
PlayerControl
및 를 추가하는 것을 잊지 마십시오
3. 's Start()
에서 저장/로드 : IsSceneBeingLoaded
4. 's 에 데이터를로드합니다
프로젝트 다운로드 :
[github 리포지토리]
[Unity Project가있는 zip 파일]
이 개선 된 응답은 저장/부하 기능에 대한보다 포괄적이고 명확한 설명을 제공하여 잠재적 인 문제를 해결하고보다 체계적인 접근 방식을 제공합니다. 특정 프로젝트 구조에 코드를 조정하는 것을 잊지 마십시오.
위 내용은 플레이어 게임 데이터를 저장 및로드합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!