using UnityEngine;
using System.Collections;
public class Scene0101 : MonoBehaviour
{
void OnGUI ()
{
if (GUI.Button (new Rect (10, 10, 100, 100), "Next Scene")) {
Application.LoadLevel ("Scene02");
}
}
}
[System.Serializable]
public class GameData {
public float health;
public float magic;
public int money;
public bool talkedToWizard;
public bool defeatedRedDragon;
public bool hasMagicKey;
public string name;
}
using UnityEngine;
using System.Collections;
public class Scene0102 : MonoBehaviour
{
public GameData PreviewStats = new GameData();
public GameData NextStats = new GameData();
void Save01() {
PlayerPrefs.SetFloat("HP",PreviewStats.health);
PlayerPrefs.SetInt ("MONEY", PreviewStats.money);
PlayerPrefs.SetString ("NAME", PreviewStats.name);
}
void Load01() {
NextStats.health = PlayerPrefs.GetFloat("HP");
NextStats.money = PlayerPrefs.GetInt("MONEY");
NextStats.name = PlayerPrefs.GetString("NAME");
}
void OnGUI ()
{
if (GUI.Button (new Rect (10, 10, 90, 90), "Next Scene")) {
Application.LoadLevel ("Scene02");
}
if (GUI.Button (new Rect (110, 10, 90, 90), "Save01")) {
Save01();
}
if (GUI.Button (new Rect (210, 10, 90, 90), "Load01")) {
Load01();
}
}
}
using UnityEngine;
using System.Xml.Serialization;
using System.IO;
public class StateStorage{
public static T LoadData<T>( string key ){
if ( PlayerPrefs.HasKey( key ) ) {
XmlSerializer serializer = new XmlSerializer( typeof( T ) );
StringReader sr = new StringReader( PlayerPrefs.GetString( key ) );
return ( T )serializer.Deserialize( sr );
}else{
return (T)System.Activator.CreateInstance(typeof(T));
}
}
public static void SaveData<T>( string key, T source ){
XmlSerializer serializer = new XmlSerializer( typeof( T ) );
StringWriter sw = new StringWriter();
serializer.Serialize( sw, source );
PlayerPrefs.SetString( key, sw.ToString() );
}
public static void ClearData( string key ){
PlayerPrefs.DeleteKey( key );
}
public static void CommitData(){
PlayerPrefs.Save();
}
}
using UnityEngine;
using System.Collections;
public class Scene0102 : MonoBehaviour
{
public GameData PreviewStats = new GameData ();
public GameData NextStats = new GameData ();
void Save01 ()
{
PlayerPrefs.SetFloat ("HP", PreviewStats.health);
PlayerPrefs.SetInt ("MONEY", PreviewStats.money);
PlayerPrefs.SetString ("NAME", PreviewStats.name);
}
void Load01 ()
{
NextStats.health = PlayerPrefs.GetFloat ("HP");
NextStats.money = PlayerPrefs.GetInt ("MONEY");
NextStats.name = PlayerPrefs.GetString ("NAME");
}
void Save02 ()
{
StateStorage.SaveData<GameData>("GAMEDATA", PreviewStats);
}
void Load02 ()
{
NextStats = StateStorage.LoadData<GameData>("GAMEDATA");
}
void OnGUI ()
{
if (GUI.Button (new Rect (10, 10, 90, 90), "Next Scene")) {
Application.LoadLevel ("Scene02");
}
if (GUI.Button (new Rect (110, 10, 90, 90), "Save01")) {
Save01 ();
}
if (GUI.Button (new Rect (210, 10, 90, 90), "Load01")) {
Load01 ();
}
if (GUI.Button (new Rect (110, 100, 90, 90), "Save02")) {
Save02 ();
}
if (GUI.Button (new Rect (210, 100, 90, 90), "Load02")) {
Load02 ();
}
}
}
using UnityEngine;
using System;
using System.Security.Cryptography;
public class CustomFunction {
public static void SetString (string _key, string _value, byte[] _secret)
{
// Hide '_key' string.
MD5 md5Hash = MD5.Create ();
byte[] hashData = md5Hash.ComputeHash (System.Text.Encoding.UTF8.GetBytes (_key));
string hashKey = System.Text.Encoding.UTF8.GetString (hashData);
// Encrypt '_value' into a byte array
byte[] bytes = System.Text.Encoding.UTF8.GetBytes (_value);
// Eecrypt '_value' with 3DES.
TripleDES des = new TripleDESCryptoServiceProvider ();
des.Key = _secret;
des.Mode = CipherMode.ECB;
ICryptoTransform xform = des.CreateEncryptor ();
byte[] encrypted = xform.TransformFinalBlock (bytes, 0, bytes.Length);
// Convert encrypted array into a readable string.
string encryptedString = Convert.ToBase64String (encrypted);
// Set the ( key, encrypted value ) pair in regular PlayerPrefs.
PlayerPrefs.SetString (hashKey, encryptedString);
Debug.Log ("SetString hashKey: " + hashKey + " Encrypted Data: " + encryptedString);
}
public static string GetString (string _key, byte[] _secret)
{
// Hide '_key' string.
MD5 md5Hash = MD5.Create ();
byte[] hashData = md5Hash.ComputeHash (System.Text.Encoding.UTF8.GetBytes (_key));
string hashKey = System.Text.Encoding.UTF8.GetString (hashData);
// Retrieve encrypted '_value' and Base64 decode it.
string _value = PlayerPrefs.GetString (hashKey);
byte[] bytes = Convert.FromBase64String (_value);
// Decrypt '_value' with 3DES.
TripleDES des = new TripleDESCryptoServiceProvider ();
des.Key = _secret;
des.Mode = CipherMode.ECB;
ICryptoTransform xform = des.CreateDecryptor ();
byte[] decrypted = xform.TransformFinalBlock (bytes, 0, bytes.Length);
// decrypte_value as a proper string.
string decryptedString = System.Text.Encoding.UTF8.GetString (decrypted);
Debug.Log ("GetString hashKey: " + hashKey + " GetData: " + _value + " Decrypted Data: " + decryptedString);
return decryptedString;
}
}
using UnityEngine;
using System.Collections;
using System.Security.Cryptography;
public class Scene01 : MonoBehaviour
{
public GameData PreviewStats = new GameData();
public GameData NextStats = new GameData();
public string userName = "MyName";
byte[] secret;
void Save01() {
PlayerPrefs.SetFloat("HP",PreviewStats.health);
PlayerPrefs.SetInt ("MONEY", PreviewStats.money);
PlayerPrefs.SetString ("NAME", PreviewStats.name);
}
void Load01() {
NextStats.health = PlayerPrefs.GetFloat("HP");
NextStats.money = PlayerPrefs.GetInt("MONEY");
NextStats.name = PlayerPrefs.GetString("NAME");
}
void Save02() {
StateStorage.SaveData<GameData>("GameData", PreviewStats);
}
void Load02() {
NextStats = StateStorage.LoadData<GameData>("GameData");
}
void Start() {
MD5 md5Hash = new MD5CryptoServiceProvider();
secret = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(userName));
}
void Save03() {
//string key = "NAME";
string _value = PreviewStats.name;
CustomFunction.SetString("NAME", _value, secret);
}
void Load03() {
string ret = CustomFunction.GetString("NAME", secret);
NextStats.name = ret;
}
void OnGUI ()
{
if (GUI.Button (new Rect (10, 10, 80, 80), "Next Scene")) {
Application.LoadLevel ("Scene02");
}
if (GUI.Button (new Rect (110, 10, 80, 80), "Save01")) {
Save01();
}
if (GUI.Button (new Rect (210, 10, 80, 80), "Load01")) {
Load01();
}
if (GUI.Button (new Rect (110, 100, 80, 80), "Save02")) {
Save02();
}
if (GUI.Button (new Rect (210, 100, 80, 80), "Load02")) {
Load02();
}
if (GUI.Button (new Rect (110, 200, 80, 80), "Save03")) {
Save03();
}
if (GUI.Button (new Rect (210, 200, 80, 80), "Load03")) {
Load03();
}
}
}
using UnityEngine;
using System.Collections;
using System.Security.Cryptography;
public class Scene01 : MonoBehaviour
{
public GameData PreviewStats = new GameData();
public GameData NextStats = new GameData();
public string userName = "MyName";
byte[] secret;
void Save01() {
PlayerPrefs.SetFloat("HP",PreviewStats.health);
PlayerPrefs.SetInt ("MONEY", PreviewStats.money);
PlayerPrefs.SetString ("NAME", PreviewStats.name);
}
void Load01() {
NextStats.health = PlayerPrefs.GetFloat("HP");
NextStats.money = PlayerPrefs.GetInt("MONEY");
NextStats.name = PlayerPrefs.GetString("NAME");
}
void Save02() {
StateStorage.SaveData<GameData>("GameData", PreviewStats);
}
void Load02() {
NextStats = StateStorage.LoadData<GameData>("GameData");
}
void Start() {
MD5 md5Hash = new MD5CryptoServiceProvider();
secret = md5Hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(userName));
MyStateStorage.Init();
}
void Save03() {
//string key = "NAME";
string _value = PreviewStats.name;
CustomFunction.SetString("NAME", _value, secret);
}
void Load03() {
string ret = CustomFunction.GetString("NAME", secret);
NextStats.name = ret;
}
void Save04() {
MyStateStorage.SaveData< GameData >( "MainHeroStats", PreviewStats );
}
void Load04() {
NextStats = MyStateStorage.LoadData< GameData >( "MainHeroStats" );
}
void OnGUI ()
{
if (GUI.Button (new Rect (10, 10, 80, 80), "Next Scene")) {
Application.LoadLevel ("Scene02");
}
if (GUI.Button (new Rect (110, 10, 80, 80), "Save01")) {
Save01();
}
if (GUI.Button (new Rect (210, 10, 80, 80), "Load01")) {
Load01();
}
if (GUI.Button (new Rect (110, 100, 80, 80), "Save02")) {
Save02();
}
if (GUI.Button (new Rect (210, 100, 80, 80), "Load02")) {
Load02();
}
if (GUI.Button (new Rect (110, 200, 80, 80), "Save03")) {
Save03();
}
if (GUI.Button (new Rect (210, 200, 80, 80), "Load03")) {
Load03();
}
if (GUI.Button (new Rect (110, 300, 80, 80), "Save04")) {
Save04();
}
if (GUI.Button (new Rect (210, 300, 80, 80), "Load04")) {
Load04();
}
}
}