view Assets/Application/Scripts/Test/SaveDataTest.cs @ 4:2878be4487ec

add Maping Code.
author Kazuma
date Tue, 08 Nov 2016 17:07:48 +0900
parents
children 12f4f937da7f
line wrap: on
line source

using UnityEngine;
using UnityEditor;
using System.Collections;
using UnityEngine.SceneManagement;

public class SaveDataTest : MonoBehaviour {
	
	DefaultNodePath root = new DefaultNodePath();
	NodePath path; 
	System.Collections.Generic.List<ParentObject> ParentList = new System.Collections.Generic.List<ParentObject>();
	public ConvertObject co;

	private void Start () {
		path = root.add(0);
		Check ();
	}

	private void Update () {
		if (Input.GetKeyDown (KeyCode.A)) {
			SaveData.Instance.CreateTree (SceneManager.GetActiveScene().name);
		}

		if (Input.GetKeyDown (KeyCode.S)) {
			int i = 1;
			foreach (var parent in ParentList) {
				foreach (var comp in parent.dic) {
					Mapping (comp.Key, comp.Value);
				}
//				SaveData.Instance.GetAttribute (path);
				path = path.last ().rights();
				path = path.add (i);
				i++;
				SaveData.Instance.EditorMode ();
			}
		}
	}

	private void Mapping(string key, Component value) {
		byte[] array = ConvertObject.Convert (value);
		SaveData.Instance.PutAttribute (path, key , array);
	}

	private void Check () {
		// やりたいこと
		// まず親のみ取得
		// その後親から辿っていってComponentをすべてとる
		// http://answers.unity3d.com/questions/275714/how-to-find-all-components-of-a-game-object.html
		// こことかいいかも

		// TreeMap<Gameobject, ChildObject> Left : Parent, Right : ChildTreeMap
		// 一番浅い親のTreeMapをListに入れる
		int i = 0;
		foreach (GameObject obj in UnityEngine.Resources.FindObjectsOfTypeAll(typeof(GameObject))) {
			string path = AssetDatabase.GetAssetOrScenePath (obj);
			bool isScene = path.Contains (".unity");
			if (isScene) { // このシーンの中のオブジェクトかどうか。
				if (obj.transform.childCount == 0 && obj.transform.parent == null || obj.transform.childCount > 0 && obj.transform.parent == null) { // 親を取得
					ParentObject parent = new ParentObject (obj, root.add (i));
					i++;
				}
			}
		}
	}
}