I get the error Type ‘RPG.Movement.Mover+MoverSaveData’ in Assembly ‘Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ is not marked as serializable. when i try to save the console will print that it saved but then through error rightafter
this is my mover script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using RPG.Core;
using RPG.Saving;
namespace RPG.Movement
{
public class Mover : MonoBehaviour, IAction, ISaveable
{
[SerializeField] Transform target;
[SerializeField] float maxSpeed;
// Ray lastRay;
NavMeshAgent navMeshAgent;
Health health;
private void Start() {
navMeshAgent = GetComponent<NavMeshAgent>();
health = GetComponent<Health>();
}
// Update is called once per frame
void Update()
{
navMeshAgent.enabled = !health.IsDead();
UpdateAnimator();
}
public void StartMoveAction(Vector3 destination, float speedfraction)
{
GetComponent<ActionScheduler>().StartAction(this);
MoveTo(destination, speedfraction);
}
public void MoveTo(Vector3 destination, float speedFraction)
{
navMeshAgent.destination = destination;
navMeshAgent.speed = maxSpeed * Mathf.Clamp01(speedFraction);
navMeshAgent.isStopped = false;
}
//MoveTo but its for crouching
public void Cancel()
{
navMeshAgent.isStopped = true;
}
//Debug.DrawRay(lastRay.origin, lastRay.direction * 100);
private void UpdateAnimator()
{
Vector3 velocity = navMeshAgent.velocity;
Vector3 localVelocity = transform.InverseTransformDirection(velocity);
GetComponent<Animator>().SetFloat("forwardSpeed", velocity.magnitude);
}
struct MoverSaveData
{
public SerializableVector3 position;
public SerializableVector3 rotation;
}
public object CaptureState()
{
MoverSaveData data = new MoverSaveData();
data.position = new SerializableVector3(transform.position);
data.rotation = new SerializableVector3(transform.eulerAngles);
return data;
}
public void RestoreState(object state)
{
MoverSaveData data = (MoverSaveData)state;
GetComponent<NavMeshAgent>().enabled = false;
transform.position = data.position.ToVector();
transform.eulerAngles = data.rotation.ToVector();
GetComponent<NavMeshAgent>().enabled = true;
}
}
}