개체의 위치 및 회전이 저장 /로드되지 않음 (Unity 엔진)

폴 체스터

게임 내에서 플레이어의 위치와 회전을 저장해야합니다. 이 목적을 위해 바이너리 포맷터와 '저장'과 '로드'버튼 2 개를 사용합니다. 스크립트는 내가 수동으로 기록하고 저장 한 다음 장면을 다시로드하면 공용 Vector3 데이터를 저장합니다. 그러나 플레이어 (큐브 만)는 위치와 회전을 변경하지 않습니다. 이 문제를 해결하기 위해 다음을 추가했습니다.

void FixedUpdate()
    {
        position = player.transform.position;
        rotation = player.transform.rotation;
    } 

그러나 그것은 도움이되지 않았습니다. 이 작업을 수행하기 위해 2 개의 스크립트를 사용합니다.

Player.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    public GameObject player;
    public Vector3 position;
    public Quaternion rotation;

    void FixedUpdate()
    {
        position = player.transform.position;
        rotation = player.transform.rotation;
    }

    public void Save()
    {
        SaveLoadManager.SavePlayer(this);
    }

    public void Load()
    {
        float[] loadedStats = SaveLoadManager.LoadPlayer();

        Vector3 loadedPos = new Vector3(loadedStats[0], loadedStats[1], loadedStats[2]);
        Vector3 loadedRot = new Vector3(loadedStats[3], loadedStats[4], loadedStats[5]);

        player.transform.position = loadedPos;
        player.transform.rotation = Quaternion.Euler(loadedRot);
    }
}

SaveLoadManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public static class SaveLoadManager
{
    public static void SavePlayer(Player player)
    {
        BinaryFormatter bf = new BinaryFormatter();
        FileStream stream = new FileStream(Application.persistentDataPath + "/player.save", FileMode.Create);

        PlayerData data = new PlayerData(player);

        bf.Serialize(stream, data);
        stream.Close();
    }

    public static float[] LoadPlayer()
    {
        if (File.Exists(Application.persistentDataPath + "/player.save"))
        {
            BinaryFormatter bf = new BinaryFormatter();
            FileStream stream = new FileStream(Application.persistentDataPath + "/player.save", FileMode.Open);

            PlayerData data = bf.Deserialize(stream) as PlayerData;

            stream.Close();
            return data.stats;
        }
        else
        {
            Debug.LogError("File does not exist.");
            return new float[6];
        }
    }
}

[Serializable]
public class PlayerData
{
    public float[] stats;

    public PlayerData(Player player)
    {
        stats = new float[6];

        stats[0] = player.position.x;
        stats[1] = player.position.y;
        stats[2] = player.position.z;

        stats[3] = player.rotation.x;
        stats[4] = player.rotation.y;
        stats[5] = player.rotation.z;
    }
}

저는 Save-Load 시스템과 Binary Formatting을 처음 접했기 때문에 도움을 주시길 바랍니다.

미리 감사드립니다!

문제를 보여주는 GIF.

알렉스 엠.

누락 된 것이 있는지 확실하지 않지만 실제로 Player의 위치를로드 된 값으로 설정하는 Load () 메서드의 아무 곳도 볼 수 없습니다. 대신로드 된 값을 불필요한 변수에 전달한 다음 FixedUpdate ()에서 지속적으로 덮어 쓰는 것처럼 보입니다.

다음과 같이 시도해보십시오.

   public void Load()
    {
        float[] loadedStats = SaveLoadManager.LoadPlayer();
        
        Vector3 loadedPos = new Vector3(loadedStats[0], loadedStats[1], loadedStats[2]);
        Vector3 loadedRot = new Vector3(loadedStats[3], loadedStats[4], loadedStats[5]);
        player.transform.position = loadedPos ;
        player.transform.rotation = Quaternion.Euler(loadedRot);

    }

그리고 Player 스크립트에서 위치 및 회전 변수를 제거 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

엔터티 모델에 대한 저장 프로 시저 및 함수가 업데이트되지 않음

분류에서Dev

Ubuntu 14.04에서 자동 업데이트 및 CUDA 설치 후 Unity Desktop이로드되지 않음

분류에서Dev

Rails, Bootstrap 및 enum 드롭 다운-값이 저장되지 않음

분류에서Dev

RESTAngular PUT가 전체 페이로드를 저장하지 않음

분류에서Dev

이미지 열기, 회전 및 저장

분류에서Dev

OneNote 전자 필기장의 위치 (동기화되지 않음)

분류에서Dev

저장 종속 개체를로드하지 않고 외부 키를 가진 개체를 최대 절전 모드

분류에서Dev

Ubuntu USB Live의 새로운 기능-변경 사항이 저장되지 않음 + USB 드라이브의 전체 메모리가 사용되지 않음

분류에서Dev

안드로이드 장치의 내부 보조 메모리 사용 및 응용 프로그램 제거 중에 데이터가 손실되지 않음

분류에서Dev

Unity : Raycast가 자식 개체의 충돌기를 치지 않음

분류에서Dev

Django : 개체 속성이 저장 / 업데이트되지 않음

분류에서Dev

Synaptics 터치 패드 설정이 적용 / 저장되지 않음

분류에서Dev

터치 패드 설정이 저장되지 않음

분류에서Dev

시드 중 하위 모델이 저장되지 않음

분류에서Dev

업로드 된 이미지가 Ruby on Rails 앱에 표시되지 않음 (아바타 이외의 모든 항목이 저장 및 업데이트 중임)

분류에서Dev

서블릿의 RemoteApi 호출이 로컬 앱 엔진 앱에로드되지 않음

분류에서Dev

MongoDB 개체 유형이 저장되지 않음

분류에서Dev

모든 Android 기기 및 버전의 저장 위치 "저장소"가 고정되어 있습니까?

분류에서Dev

재정의하지 않고 이미지를 저장할 위치

분류에서Dev

JavaScript 클로저 및 예기치 않은-정의되지 않음-반환

분류에서Dev

Firefox / Chrome의 스팸 (및 검색 엔진)에 대한 설명되지 않은 체계적인 전달

분류에서Dev

Android-프로필 사진 저장 위치 및 방법

분류에서Dev

프로덕션에서 Google 앱 엔진 및 데이터 저장소 사용

분류에서Dev

삼성 안드로이드 장치의 회전이 작동하지 않는 이유는 무엇입니까?

분류에서Dev

장소 및 위치가 올바르게 표시되지 않음

분류에서Dev

장치의 (안드로이드) 키보드가 활성화되어있을 때 jquery 모바일 팝업 위젯이 움직이지 않음

분류에서Dev

장치 토큰이 저장되지 않음

분류에서Dev

Windows 사진 앨범이 실제로 저장되는 위치

분류에서Dev

로그인 후 unity 및 트레이가 표시되지 않음

Related 관련 기사

  1. 1

    엔터티 모델에 대한 저장 프로 시저 및 함수가 업데이트되지 않음

  2. 2

    Ubuntu 14.04에서 자동 업데이트 및 CUDA 설치 후 Unity Desktop이로드되지 않음

  3. 3

    Rails, Bootstrap 및 enum 드롭 다운-값이 저장되지 않음

  4. 4

    RESTAngular PUT가 전체 페이로드를 저장하지 않음

  5. 5

    이미지 열기, 회전 및 저장

  6. 6

    OneNote 전자 필기장의 위치 (동기화되지 않음)

  7. 7

    저장 종속 개체를로드하지 않고 외부 키를 가진 개체를 최대 절전 모드

  8. 8

    Ubuntu USB Live의 새로운 기능-변경 사항이 저장되지 않음 + USB 드라이브의 전체 메모리가 사용되지 않음

  9. 9

    안드로이드 장치의 내부 보조 메모리 사용 및 응용 프로그램 제거 중에 데이터가 손실되지 않음

  10. 10

    Unity : Raycast가 자식 개체의 충돌기를 치지 않음

  11. 11

    Django : 개체 속성이 저장 / 업데이트되지 않음

  12. 12

    Synaptics 터치 패드 설정이 적용 / 저장되지 않음

  13. 13

    터치 패드 설정이 저장되지 않음

  14. 14

    시드 중 하위 모델이 저장되지 않음

  15. 15

    업로드 된 이미지가 Ruby on Rails 앱에 표시되지 않음 (아바타 이외의 모든 항목이 저장 및 업데이트 중임)

  16. 16

    서블릿의 RemoteApi 호출이 로컬 앱 엔진 앱에로드되지 않음

  17. 17

    MongoDB 개체 유형이 저장되지 않음

  18. 18

    모든 Android 기기 및 버전의 저장 위치 "저장소"가 고정되어 있습니까?

  19. 19

    재정의하지 않고 이미지를 저장할 위치

  20. 20

    JavaScript 클로저 및 예기치 않은-정의되지 않음-반환

  21. 21

    Firefox / Chrome의 스팸 (및 검색 엔진)에 대한 설명되지 않은 체계적인 전달

  22. 22

    Android-프로필 사진 저장 위치 및 방법

  23. 23

    프로덕션에서 Google 앱 엔진 및 데이터 저장소 사용

  24. 24

    삼성 안드로이드 장치의 회전이 작동하지 않는 이유는 무엇입니까?

  25. 25

    장소 및 위치가 올바르게 표시되지 않음

  26. 26

    장치의 (안드로이드) 키보드가 활성화되어있을 때 jquery 모바일 팝업 위젯이 움직이지 않음

  27. 27

    장치 토큰이 저장되지 않음

  28. 28

    Windows 사진 앨범이 실제로 저장되는 위치

  29. 29

    로그인 후 unity 및 트레이가 표시되지 않음

뜨겁다태그

보관