private void OnCheckAtlas()
    {
        _selectHit        = null;
        _selectSpriteName = "";
        HitManager.Clear();

        List <Object> prefabList = GetPrefabs();

        foreach (Object obj in prefabList)
        {
            GameObject      go      = obj as GameObject;
            List <UISprite> sprites = PrefabSpriteManager.GetAllSprite(go);
            foreach (UISprite sprite in sprites)
            {
                if (sprite.atlas != _targetAtlas)
                {
                    continue;
                }
                foreach (UISpriteData data in _targetAtlas.spriteList)
                {
                    HitManager managr = HitManager.GetManager(data.name);
                    if (sprite.spriteName != data.name)
                    {
                        continue;
                    }
                    string path = GameObjectExt.GetHierarchyWithRoot(sprite.transform, go.transform);
                    managr.SetEditPrefab(go);
                    managr.AddHit(path);
                }
            }
        }
    }
Exemple #2
0
 public UIComponentInfo(GameObject go, Transform prefabRoot)
 {
     this.comType    = "GameObject";
     this.memberName = go.name;
     this.path       = GameObjectExt.GetHierarchyWithRoot(go.transform, prefabRoot);
     uid             = MD5Hashing.HashString(string.Format("{0}:{1}|{2}", prefabRoot.name, this.memberName, this.path));
 }
Exemple #3
0
    public UIComponentInfo(Component component, Transform prefabRoot)
    {
//		this.com = component;
        this.comType    = component.GetType().Name;
        this.memberName = string.Format("{0}_{1}", component.name, comType);
        this.path       = GameObjectExt.GetHierarchyWithRoot(component.transform, prefabRoot);
        uid             = MD5Hashing.HashString(string.Format("{0}:{1}|{2}", prefabRoot.name, this.memberName, this.path));
    }
    /*
     * private static string _cachePath;
     * public static string CachePath
     * {
     *  get
     *  {
     *      if (_cachePath != null)
     *          return _cachePath;
     *
     *      string path = Application.dataPath;
     *      _cachePath = path.Substring(0, path.LastIndexOf("/")) + "/PrefabSpriteInfo.txt";
     *      return _cachePath;
     *  }
     *
     * }
     */

    public static bool CheckUpdate(string root)
    {
        bool bChange = false;

        string[] strs = Directory.GetFiles(root, "*.prefab", SearchOption.AllDirectories);

        _prefabDct.Clear();
        foreach (string name in strs)
        {
            string     filename = name.Replace("\\", "/");
            PrefabData prefabData;
            if (_prefabDct.ContainsKey(filename))
            {
                prefabData = _prefabDct[filename];
            }
            else
            {
                prefabData = new PrefabData(filename);
                _prefabDct.Add(filename, prefabData);
            }

            FileInfo        file     = new FileInfo(filename);
            System.TimeSpan ts       = file.LastWriteTime - new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
            string          lastTime = System.Convert.ToInt64(ts.TotalSeconds).ToString();

            //图集增加和删除可能会导致prefab.UISprite 的atlas属性变化
            //所以这里每次都刷新了
            //时间戳一样,忽略检测
            //if (prefabData.lastTime == lastTime)
            //    continue;

            prefabData.lastTime = lastTime;

            prefabData.ClearItem();
            GameObject go = AssetDatabase.LoadMainAssetAtPath(filename) as GameObject;
            if (go == null)
            {
                continue;
            }

            var spriteList = GetAllSprite(go);
            foreach (UISprite sprite in spriteList)
            {
                SpriteData data = new SpriteData();
                data.uiPath     = filename;
                data.spriteName = sprite.spriteName;
                data.prefabName = go.name;
                if (sprite.atlas != null)
                {
                    data.atlasName = sprite.atlas.name;
                    data.atlasPath = AssetDatabase.GetAssetPath(sprite.atlas);
                    data.atlasPath = data.atlasPath.Replace("\\", "/");
                }
                data.spriteUIPath = GameObjectExt.GetHierarchyWithRoot(sprite.transform, go.transform);
                prefabData.AddItem(data);
            }

            bChange = true;
        }
        return(bChange);
    }