List を string に変換するコード
using UnityEngine;
using System;
using System.IO;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;
namespace MyUtils {
public class SerializeUtils {
public static string Serialize<T> (T obj) {
var b = new BinaryFormatter();
var m = new MemoryStream();
b.Serialize(m, obj);
return Convert.ToBase64String (
m.GetBuffer ()
);
}
public static T Deserialize<T> (string str) {
var b = new BinaryFormatter();
var m = new MemoryStream(Convert.FromBase64String(str));
return (T)b.Deserialize(m);
}
}
}
List を string に変換するコードのテスト
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using MyUtils;
namespace MyUtilsTest {
[TestFixture]
[Category("MyUtils")]
public class MyUtilsTest {
[Test]
public void SerializeTest () {
List<int> list1 = new List<int> { 0, 1, 1, 2, 3, 5, 8, 13 };
string serizlizedList1 = SerializeUtils.Serialize<List<int>> (list1);
Debug.Log (serizlizedList1);
List<int> list2 = SerializeUtils.Deserialize<List<int>> (serizlizedList1);
Assert.That (list2 [0], 0);
Assert.That (list2 [3], 2);
Assert.That (list2 [7], 13);
}
}
}
使用例
PlayerPrefs.SetString ("list1", SerializeUtils.Serialize<List<int>> (list1));
List<int> list2 = SerializeUtils.Deserialize<List<int>> (PlayerPrefs.GetString ("list1"));