如何在不使用 C# 中的玩家首选项的情况下在 Unity 中保存我的玩家位置

本文关键字:玩家 情况下 Unity 保存 位置 我的 首选项 | 更新日期: 2023-09-27 17:57:01

我一直在努力弄清楚如何在 Unity 中保存我的玩家位置,尤其是在不使用 playerprefs 的情况下,它必须是某种浮点数,因为您无法将 Vectors 保存在可序列化类中,即使是某种将 Vectors(Vector3) 转换为浮点数的方法也会有所帮助。

任何帮助将不胜感激。

如何在不使用 C# 中的玩家首选项的情况下在 Unity 中保存我的玩家位置

你应该像这样实现ISerializable接口:

using UnityEngine;
using System;
using System.Runtime.Serialization;
[Serializable]
public class BasePrefabSaveData : ISerializable
{
   public Vector3 _Position;
   public BasePrefabSaveData()
   {
   }
   public BasePrefabSaveData(SerializationInfo info, StreamingContext context)
   {
      _Position.x = (float)info.GetValue( "Position.x", typeof( float ) );
      _Position.y = (float)info.GetValue( "Position.y", typeof( float ) );
      _Position.z = (float)info.GetValue( "Position.z", typeof( float ) );
   }
   public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
   {
      info.AddValue( "Position.x", _Position.x, typeof( float ) );
      info.AddValue( "Position.y", _Position.y, typeof( float ) );
      info.AddValue( "Position.z", _Position.z, typeof( float ) );
   }
}