using UnityEngine; using System.Collections; using System; using UnityEditor; namespace GFGGame { public class SceneController { public static void UpdateLoginScene(GameObject sceneObj) { //背景 Transform tf = sceneObj.transform.Find("Bg"); SpriteRenderer spr = tf.GetComponent(); var resPath = ResPathUtil.GetDressUpPath("jhsy_bg", "jpg"); Sprite sp = GFGAsset.Load(resPath); DressUpUtil.AddAssetReleaser(tf.gameObject, resPath); spr.sprite = sp; //角色 DressUpUtil.UpdateBody("ui_loginrole", sceneObj, true, null); } public static void UpdateMainScene(GameObject sceneObj) { //背景 Transform tf = sceneObj.transform.Find("Bg"); SpriteRenderer spr = tf.GetComponent(); var resPath = ResPathUtil.GetDressUpPath("zjm_bg1", "jpg"); Sprite sp = GFGAsset.Load(resPath); DressUpUtil.AddAssetReleaser(tf.gameObject, resPath); spr.sprite = sp; //角色 CustomSuitData suitSavedData = CustomSuitDataManager.GetCurrentSuitList(); int[] equipDatas = suitSavedData.equipDatas; UpdateRole(equipDatas, sceneObj, false); if (suitSavedData.pic > 0 && suitSavedData.suitId > 0) { SuitCfg suitCfg = SuitCfgArray.Instance.GetCfg(suitSavedData.suitId); DressUpUtil.UpdateBody(suitCfg.picRes, sceneObj, !string.IsNullOrEmpty(suitCfg.aniRes), suitCfg.effRes); } else { DressUpUtil.UpdateBody(null, sceneObj); } } public static void UpdatePhotographBgOrNpcOrBorder(GameObject sceneObj, EnumPhotographType type, int itemId) { string objName = ""; ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId); var resPath = ""; ResPathUtil.GetDressUpPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType)); if (type == EnumPhotographType.BG) { objName = "Bg/BgRes"; resPath = ResPathUtil.GetDressUpPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType)); } else if (type == EnumPhotographType.NPC) { objName = "Npc/NpcRes"; resPath = ResPathUtil.GetNpcPicFPath(itemCfg.res); } else if (type == EnumPhotographType.BORDER) { objName = "Border/BorderRes"; resPath = ResPathUtil.GetDressUpPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType)); } Transform tf = sceneObj.transform.Find(objName); SpriteRenderer spr = tf.GetComponent(); DressUpUtil.ChangeAssetReleaser(tf.gameObject, resPath); Sprite sp = GFGAsset.Load(resPath); spr.sprite = sp; spr.size = spr.sprite.bounds.size;//将节点设置为原图大小 // TextureImporter ti = (TextureImporter)TextureImporter.GetAtPath(AssetDatabase.GetAssetPath(spr)); // ti.isReadable = true; if (type == EnumPhotographType.BG) { ItemTypeCfg typeCfg = ItemTypeCfgArray.Instance.GetCfg(ConstDressUpItemType.BEI_JING); spr.sortingOrder = typeCfg.defaultLayer; } if (type == EnumPhotographType.BORDER) return;//边框不加碰撞盒 PhotographAddCollider(tf.gameObject); } public static void PhotographAddCollider(GameObject gameObject) { PolygonCollider2D polygonCollider2D = gameObject.GetComponent(); if (polygonCollider2D != null) { GameObject.Destroy(polygonCollider2D); } polygonCollider2D = gameObject.AddComponent(); polygonCollider2D.isTrigger = true; } public static void UpdateRole(int[] equipDatas, GameObject sceneObj, bool needSetMask = false, int[] exceptTypes = null, bool showAni = true, GameObject parentObj = null) { Reset(sceneObj); int count = equipDatas.Length; for (int i = 0; i < count; i++) { int id = (int)equipDatas[i]; if (exceptTypes != null) { int subType = ItemUtil.GetItemSubType(id); if (Array.IndexOf(exceptTypes, subType) >= 0) { continue; } } DressUpUtil.AddItem(id, sceneObj, needSetMask, showAni, parentObj); } DressUpUtil.UpdateBody(null, sceneObj, false, null, needSetMask); } public static void UpdateDialogBg(string value, GameObject sceneObj) { Transform tf = sceneObj.transform.Find("Bg"); SpriteRenderer spr = tf.GetComponent(); if (value == "0") { spr.sprite = null; } else { var resPath = ResPathUtil.GetDressUpPath(value, "jpg"); Sprite sp = GFGAsset.Load(resPath); DressUpUtil.AddAssetReleaser(tf.gameObject, resPath); spr.sprite = sp; } } public static void UpdateDialogPic(string value, GameObject sceneObj) { Transform tf = sceneObj.transform.Find("Pic"); SpriteRenderer spr = tf.GetComponent(); if (value == "0") { spr.sprite = null; } else { void UpdateDialogPicAlpha(object param) { Color c = spr.color; if (spr.enabled && c.a < 1f) { c.a += 0.05f; spr.color = c; } else { FairyGUI.Timers.inst.Remove(UpdateDialogPicAlpha); } } var resPath = ResPathUtil.GetNpcPicSPath(value); Sprite sp = GFGAsset.Load(resPath); DressUpUtil.AddAssetReleaser(tf.gameObject, resPath); spr.sprite = sp; Color c = spr.color; c.a = 0f; spr.color = c; FairyGUI.Timers.inst.AddUpdate(UpdateDialogPicAlpha); } } public static void UpdateFightTarget(string value, GameObject sceneObj) { Transform tf = sceneObj.transform.Find("Npc"); SpriteRenderer spr = tf.GetComponent(); var resPath = ResPathUtil.GetNpcPicFPath(value); Sprite sp = GFGAsset.Load(resPath); DressUpUtil.AddAssetReleaser(tf.gameObject, resPath); spr.sprite = sp; } private static void Reset(GameObject sceneObj) { //背景层次 Transform bg = sceneObj.transform.Find("Bg"); if (bg != null) { SpriteRenderer spr = bg.GetComponent(); if (spr != null) { ItemTypeCfg typeCfg = ItemTypeCfgArray.Instance.GetCfg(ConstDressUpItemType.BEI_JING); spr.sortingOrder = typeCfg.defaultLayer; } } //角色清理 Transform role = sceneObj.transform.Find("Role"); if (role != null) { int childCount = role.childCount; for (int i = childCount - 1; i >= 0; --i) { Transform child = role.GetChild(i); if (child.gameObject.name != "Body") { GameObject.DestroyImmediate(child.gameObject); } } } } } }