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); }
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; }
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); }