title: Vector3 not serializable Unity3D
body: <p>Ok so I followed the Unity3D data persistence tutorial, everything is going smoothly until I tried to save a Vector3 type of data. The tutorial only shows how to save int and strings. </p>
  
  <p>When I used the function Save() , the consoles shows me that <em>says</em>: <code>"SerializationException: Type UnityEngine.Vector3 is not marked as Serializable.</code></p>
  
  <p>But as you can see from my code, I included it under the Serializable part. I am trying to save my playerPosition. Thanks</p>
  
  <pre><code>using UnityEngine;
  using System.Collections;
  using System;
  using System.Runtime.Serialization.Formatters.Binary;
  using System.IO;
  using System.Collections.Generic;
  
  public class GameManager : MonoBehaviour 
  {
      public static GameManager control;
  
  public float health;
  public float mana;
  public float experience;
  public Vector3 playerPosition;
  public List&lt;Item&gt; inventory = new List&lt;Item&gt;();
  
  void Awake()
  {
      if(control == null)
      {
          DontDestroyOnLoad(gameObject);
          control = this;
      }
      else if(control != this)
      {
          Destroy(gameObject);
      }
  }
  
  // Use this for initialization
  void Start (){}
  
  // Update is called once per frame
  void Update () {}
  
  void OnGUI() 
  {
      GUI.Box(new Rect(10, 10, 100, 30), "Health: " + health);
      GUI.Box(new Rect(10, 30, 100, 30), "Mana: " + mana);
      GUI.Box(new Rect(10, 50, 100, 30), "Experience: " + experience);
  }
  
  public void SaveSlot1()
  {
      BinaryFormatter bf = new BinaryFormatter();
      FileStream file = File.Create(Application.persistentDataPath + 
                                    "/saveData1.dat");
  
      PlayerData data = new PlayerData();
      data.health = health;
      data.mana = mana;
      data.experience = experience;
      data.playerPosition = playerPosition;
  
      for(int i = 0; i &lt;inventory.Count; i++)
      {
          //data.inventory[i] = inventory[i];
      }
  
      bf.Serialize(file, data);
      file.Close();
  }
  
  public void LoadSlot1()
  {
      if(File.Exists(Application.persistentDataPath +
                     "/saveData1.dat") )
      {
          BinaryFormatter bf = new BinaryFormatter();
          FileStream file = File.Open(Application.persistentDataPath + 
                                      "/saveData1.dat", FileMode.Open);
          PlayerData data = (PlayerData)bf.Deserialize(file);
          file.Close();
  
          health = data.health;
          mana = data.mana;
          experience = data.experience;
          playerPosition = data.playerPosition;
  
          for(int i = 0; i &lt;inventory.Count; i++)
          {
              //inventory[i] = data.inventory[i];
          }
      }
  
  }
  
  [Serializable]
  class PlayerData
  {
      public float    health;
      public float    mana;
      public float    experience;
      public Vector3  playerPosition;
      public List&lt;Item&gt; inventory = new List&lt;Item&gt;();
  
      //position
      //spells
      //
  }
  }
  </code></pre>