コード例 #1
0
    bool UpdatePrefab(PrefabsData prefab, string AtlasFromGUID, string AtlasToGUID)
    {
        string prefabData = LoadAssetAtPath(prefab.path);

        //fileID: 21300154, guid: 42387af249ba57d42b8083c8cbaee62e
        foreach (UsedSpriteData sprite in prefab.usedSprites)
        {
            if (sprite.atlasID != AtlasFromGUID)
            {
                continue;
            }

            SpriteData[] sprites = AtlasToGUID.Equals(_atlasGUID1) ? _sprites1 : _sprites2; // GET SPRITES LIST

            int id = GetSpriteID(sprite.spriteName, sprites);
            if (id < 0)
            {
                continue;
            }

            string newID = sprites[id].id; // GET NEW SPRITE ID

            string oldData = "fileID: " + sprite.spriteID + ", guid: " + sprite.atlasID;
            string newData = "fileID: " + newID + ", guid: " + AtlasToGUID;

            prefabData = prefabData.Replace(oldData, newData);
        }

        SaveAssetAtPath(prefab.path, prefabData);

        ReImportAsset(prefab.path);

        return(true);
    }
コード例 #2
0
    void GetDataFromPrefab(string guid, string prefabDataFromFile, string fileName, int altasID)
    {
        if (prefabDataFromFile == "")
        {
            return;
        }

        PrefabsData prefabData = GetStoredPrefabByPath(fileName); // GET OLD OR CREATE NEW

        prefabData.path = fileName;

        if (altasID == 1)
        {
            prefabData.isUsedAtlas1 = true;
        }

        if (altasID == 2)
        {
            prefabData.isUsedAtlas2 = true;
        }

        if (prefabData.usedSprites == null)
        {
            prefabData.usedSprites = new List <UsedSpriteData>();
        }

        // GET ALL SPRITES FORM CURRNET ATLAS IN PREFAB
        string[] spritesData = prefabDataFromFile.Split(new string[] { "guid: " + guid }, System.StringSplitOptions.None);
        for (int i = 0; i < spritesData.Length - 1; i++)
        {
            UsedSpriteData usedSprite = new UsedSpriteData();

            string[] spriteID = spritesData[i].Split(new string[] { "fileID: " }, System.StringSplitOptions.None);
            string   id       = spriteID[spriteID.Length - 1];
            id = id.Substring(0, id.Length - 2);

            if (IsInUsedSprites(prefabData.usedSprites, guid, id))
            {
                continue;
            }

            usedSprite.atlasID    = guid;
            usedSprite.spriteID   = id;
            usedSprite.spriteName = GetSpriteNameById(id, altasID);

            prefabData.usedSprites.Add(usedSprite);
        }

        _prefabsData.Remove(prefabData);
        _prefabsData.Add(prefabData); // SAVE PREFAB DATA
    }
 public override void TransformAnimation(float time, MeshRenderer myRenderer, Transform myTransform)
 {
     if (list == null || list.Length == 0)
     {
         return;
     }
     for (int i = 0; i < list.Length; i++)
     {
         PrefabsData data = list[i];
         if (data.time > prveTime && data.time <= time)
         {
             InstantiatePrefabs(data.prefabName, data.offset, data.isLanguage);
         }
     }
     prveTime = time;
 }
コード例 #4
0
    public GameObject Instantiate(string _id, Vector3 _position, Quaternion _rotation)
    {
        int hash = _id.GetHashCode();

        if (!this.prefabsIndex.ContainsKey(hash))
        {
            return(null);
        }

        PrefabsData data = this.prefabs[this.prefabsIndex[hash]];
        GameObject  instance;

        if (data.instances.Count <= data.currAmount)
        {
            instance = this.CreateGameObject(data.Prefab, _position, _rotation);
            data.instances.Add(instance);
        }
        else
        {
            instance = data.instances[data.currAmount];
            instance.transform.position = _position;
            instance.transform.rotation = _rotation;
        }

        instance.transform.parent = null;
        instance.SetActive(true);

        data.currAmount++;

        if (data.currAmount > data.maxAmount)
        {
            data.currAmount = 0;
        }

        this.prefabs[this.prefabsIndex[hash]] = data;

        return(instance);
    }