public void GameObjectReferencesAreSerialized() { string id1 = "object1"; string id2 = "object2"; GameObject object1 = Object.Instantiate(m_testPrefab); object1.name = id1; GameObject object2 = Object.Instantiate(m_testPrefab); object2.name = id2; TestSavableBehaviour behaviour1 = object1.GetComponent <TestSavableBehaviour>(); TestSavableBehaviour behaviour2 = object2.GetComponent <TestSavableBehaviour>(); behaviour1.gameObjectReferece = object2; behaviour2.referenceContainer = new TestReferenceContainer { gameObjectReferece = object1 }; var builder = new MockModelBuilder(); SaveGame saveGame = SaveGamePacker.PackSaveGame(new[] { object1, object2 }, builder.GetSavableMonobehaviours()); SerializeAndUnserialize(saveGame, builder, AllSaveablePrefabs); GameObject newObject1 = GameObject.Find(id1); GameObject newObject2 = GameObject.Find(id2); Assert.AreEqual(newObject2, newObject1.GetComponent <TestSavableBehaviour>().gameObjectReferece); Assert.AreEqual(newObject1, newObject2.GetComponent <TestSavableBehaviour>().referenceContainer.gameObjectReferece); }
public void MonoBehaviourReferencesAreSerialized() { string id1 = Guid.NewGuid().ToString(); string id2 = Guid.NewGuid().ToString(); GameObject object1 = Object.Instantiate(m_testPrefab); object1.name = id1; GameObject object2 = Object.Instantiate(m_testPrefab); object2.name = id2; TestSavableBehaviour behaviour1 = object1.GetComponent <TestSavableBehaviour>(); TestSavableBehaviour behaviour2 = object2.GetComponent <TestSavableBehaviour>(); behaviour1.monobehaviourReference = behaviour2; var builder = new MockModelBuilder(); SaveGame saveGame = SaveGamePacker.PackSaveGame(new[] { object1, object2 }, builder.GetSavableMonobehaviours()); SerializeAndUnserialize(saveGame, builder, AllSaveablePrefabs); GameObject newObject1 = GameObject.Find(id1); GameObject newObject2 = GameObject.Find(id2); Assert.AreEqual(newObject2.GetComponent <TestSavableBehaviour>(), newObject1.GetComponent <TestSavableBehaviour>().monobehaviourReference); }
private void TestSerializePrefab(GameObject prefab, IEnumerable <GameObject> allPrefabs) { var builder = new AttributeBasedTypeModelBuilder(); string testName = Guid.NewGuid().ToString(); GameObject instantiated = Object.Instantiate(prefab); instantiated.name = testName; SaveGame saveGame = SaveGamePacker.PackSaveGame(new[] { instantiated }, builder.GetSavableMonobehaviours()); SerializeAndUnserialize(saveGame, builder, allPrefabs); GameObject testObject = GameObject.Find(testName); Assert.NotNull(testObject); Assert.AreEqual(testName, testObject.name); }
public void SaveGame(string name = "Quick") { if (name == null) { throw new ArgumentNullException(nameof(name)); } var path = $"{Application.persistentDataPath}/Saved Games/{name}.sav"; try { ITypeModelBuilder builder = new AttributeBasedTypeModelBuilder(); var serializer = new GameSerializer(GetPrefabs(), builder); SaveGame saveGame = SaveGamePacker.PackSaveGame(GetSavables(), builder.GetSavableMonobehaviours()); using (var stream = new FileStream(path, FileMode.Create)) { serializer.Serialize(stream, saveGame); } } catch (Exception e) { Debug.Log(e); } }
private void BasicTestWithModelBuilder(ITypeModelBuilder builder, IEnumerable <GameObject> prefabs) { GameObject instantiated = Object.Instantiate(m_testPrefab); string testName = Guid.NewGuid().ToString(); string testValue = Guid.NewGuid().ToString(); Vector3 testPosition = new Vector3(10, 20, 30); instantiated.name = testName; instantiated.GetComponent <TestSavableBehaviour>().savableValue = testValue; instantiated.transform.position = testPosition; SaveGame saveGame = SaveGamePacker.PackSaveGame(new[] { instantiated }, builder.GetSavableMonobehaviours()); SerializeAndUnserialize(saveGame, builder, prefabs); GameObject testObject = GameObject.Find(testName); Assert.NotNull(testObject); Assert.AreEqual(testName, testObject.name); Assert.NotNull(testObject.GetComponent <TestSavableBehaviour>()); Assert.AreEqual(testValue, testObject.GetComponent <TestSavableBehaviour>().savableValue); Assert.AreEqual(testPosition, testObject.transform.position); }