public void SetNode(Transform node) { if (ExportToJson.IsPrefabAsset(node, true)) { string path = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(node); GameObject go = AssetDatabase.LoadAssetAtPath <GameObject>(path); prefabName = go.name; //获取差异数据 Transform _node = go.transform; if (_node.childCount > 0) { differ = new Differ(); for (int i = 0; i < _node.childCount; i++) { if (differ.child == null) { differ.child = new List <Differ>(); } Transform tmp = _node.GetChild(i); Transform _tmp = node.GetChild(i); Differ _differ = Differ.getDiffer(tmp, _tmp, i); if (_differ != null) { differ.child.Add(_differ); } } if (differ.child == null || differ.child.Count == 0) { differ = null; } } return; } nodeTran = node; for (int i = 0; i < nodeTran.childCount; i++) { Transform tmp = nodeTran.GetChild(i); if (child == null) { child = new List <Child>(); } child.Add(ExportToJson.SetChild(tmp)); } }
public static Differ getDifferValue(Transform node, Transform _node, int i) { //获取差异 Differ _differ = new Differ(); _differ.index = i; Vector3 v3; bool ifNull = false; // v3 = _node.localPosition - node.localPosition; if (v3.magnitude > 0) { ifNull = true; _differ.position = ExportToJson.calcValue(-v3.x) + "," + ExportToJson.calcValue(v3.y) + "," + ExportToJson.calcValue(v3.z); } v3 = _node.localRotation.eulerAngles - node.localRotation.eulerAngles; if (v3.magnitude > 0) { ifNull = true; _differ.euler = ExportToJson.calcValue(v3.x) + "," + ExportToJson.calcValue(-v3.y) + "," + ExportToJson.calcValue(-v3.z); } v3 = _node.localScale - node.localScale; if (v3.magnitude > 0) { ifNull = true; _differ.scale = ExportToJson.calcValue(v3.x) + "," + ExportToJson.calcValue(v3.y) + "," + ExportToJson.calcValue(v3.z); } if (ifNull) { return(_differ); } else { return(null); } }