/// <summary> 캐릭터 변경시? </summary> void ClearJobType() { PoolAtlasType[] types = new PoolAtlasType[] { PoolAtlasType.EquipItem, PoolAtlasType.LoadAni, PoolAtlasType.Skill }; for (int i = 0; i < types.Length; i++) { UIAtlas atlas = null; if (!PoolAtlas.TryGetValue(types[i], out atlas)) { continue; } atlas.gameObject.SetActive(false); Resources.UnloadAsset(atlas.texture); Resources.UnloadAsset(atlas.spriteMaterial); atlas = null; PoolAtlas.Remove(types[i]); } PoolAtlas.Clear(); }
/// <summary> 캐릭터 선택시 사용. </summary> public void Load() { ClearJobType(); PoolAtlas.Clear(); for (PoolAtlasType i = PoolAtlasType.Skill; i < PoolAtlasType.Max; i++) { IgnoreAtlas[(int)i] = GetLoadAtlas(i).name; } }
/// <summary> 아틀라스 타입에 맞게 반환해준다. 없으면 로드 후 보냄. </summary> public UIAtlas GetLoadAtlas(PoolAtlasType type) { UIAtlas atlas = null; if (!PoolAtlas.TryGetValue(type, out atlas)) { string atlasName = GetAtlasNameForType(type); atlas = Resources.Load(string.Format("UI/Atlases/{0}", atlasName), typeof(UIAtlas)) as UIAtlas; if (atlas == null) { Debug.LogError(string.Format("atlas not found error. path = 'UI/Atlases/{0}'", atlasName)); } else { PoolAtlas.Add(type, atlas); } } return(atlas); }
/// <summary> 아틀라스 이름 찾기 외부에서 필요하면 public으로 변경해도 상관없음. </summary> private string GetAtlasNameForType(PoolAtlasType type) { string atlasName = ""; switch (type) { case PoolAtlasType.LoadAni: case PoolAtlasType.EquipItem: case PoolAtlasType.Skill: if (NetData.instance.GetUserInfo() == null) //null일 수 있음. { break; } uint charIdx = NetData.instance.GetUserInfo().GetCharIdx(); if (charIdx == 11000) //권 { atlasName = "F"; } else if (charIdx == 12000) //명 { atlasName = "P"; } else if (charIdx == 13000) //협 { atlasName = "D"; } switch (type) { case PoolAtlasType.LoadAni: atlasName = string.Format("Ani{0}", atlasName); break; case PoolAtlasType.EquipItem: atlasName = string.Format("Item{0}", atlasName); break; case PoolAtlasType.Skill: atlasName = string.Format("Skill{0}", atlasName); break; } break; case PoolAtlasType.Img: atlasName = "Img"; break; case PoolAtlasType.Bod: atlasName = "Bod"; break; case PoolAtlasType.Loading: atlasName = "LoginAndSelectHero"; break; case PoolAtlasType.Btn: atlasName = "Btn"; break; } return(atlasName); }