Objects of global singleton aren't accessible

I am trying to create some kind of global class storing player data which could be accessible in the whole project. I created simple singleton using this code:

void Awake () {
	if(Instance == null) {
		Instance = this;
		DontDestroyOnLoad(gameObject);
	}
	else Destroy(this);
}

Unfortunately only simple variables (like int, string) are acessible. Objects in other scenes are null. What can I do to make them alive just like their simple brothers?

@Edit:
More code:

using UnityEngine;
using System.Collections;

public class PlayerInfo : MonoBehaviour {
	public static PlayerInfo Instance;

	public string Name;
	//string static Password;
	public int Money;
	public byte Flat;
	public byte Gender;
	public long CreateDate;

	public Skills Skills;

	void Awake () {
		if(Instance == null) {
			Instance = this;
			DontDestroyOnLoad(gameObject);
		}
		else Destroy(this);
	}


}

[Serializable]
public class Skills{
	public byte dexterity;
	public byte vocabulary; // talking skillz

	// add more

}

Here is the basic model of a singleton that I like to use for data storage containers that are always supposed to exist across all scenes.

using UnityEngine;

/// <summary>
/// Is a singleton construct.
/// </summary>
public class MyClass : MonoBehaviour
{

    /// <summary>
    /// Instance of the MyClass class.
    /// </summary>
    /// <remarks>
    /// Please use this for all calls to this class.
    /// </remarks>
    public static MyClass Instance
    {
        get { return _instance ?? (_instance = new GameObject("MyClass Game Object").AddComponent<MyClass>()); }
    }

    private static MyClass _instance;

    private void Awake()
    {
        //If instance is already set and this script is not it, then destroy it.
        //We already have a MyClass in this instance.
        if (_instance != null && _instance != this)
            Destroy(gameObject);
        _instance = this;
        DontDestroyOnLoad(this);
    }
}

So internally in the script you will always use “_instance”. But from everywhere else you’ll use “Instance”. Provides some data protection level for you.

Also you don’t need to attach this script to a game object in your scene. Since when Instance is referenced, if _instance is null, then a new game object will be created in your scene that will not be destroyed on load. It’s actually a very nice script for a singleton in Unity.

I can’t remember where I got this from, but I did grab this from someone else, so I can’t take credit for it. I just made some minor alterations to it. I hope it helps.