예제 #1
0
        public static Differ getDiffer(Transform node, Transform _node, int i)
        {
            int    _count      = node.childCount;
            Differ _rootDiffer = Differ.getDifferValue(node, _node, i);

            if (_count > 0)
            {
                List <Differ> _childs = new List <Differ>();
                //遍历子对象
                for (int _i = 0; _i < node.childCount; _i++)
                {
                    Transform tmp      = node.GetChild(_i);
                    Transform _tmp     = _node.GetChild(_i);
                    Differ    __differ = Differ.getDiffer(tmp, _tmp, _i);
                    if (__differ != null)
                    {
                        _childs.Add(__differ);
                    }
                }
                if (_childs.Count > 0)
                {
                    if (_rootDiffer == null)
                    {
                        _rootDiffer       = new Differ();
                        _rootDiffer.index = i;
                    }
                    _rootDiffer.child = _childs;
                }
            }
            return(_rootDiffer);
        }
예제 #2
0
 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));
     }
 }