public void DrawLayer(Layer layer, GameObject parent) { RectTransform obj = PSDImportUtility.LoadAndInstant <RectTransform>(PSDImporterConst.ASSET_PATH_EMPTY, layer.name, parent); obj.offsetMin = Vector2.zero; obj.offsetMax = Vector2.zero; obj.anchorMin = Vector2.zero; obj.anchorMax = Vector2.one; RectTransform rectTransform = parent.GetComponent <RectTransform>(); obj.sizeDelta = rectTransform.sizeDelta; obj.anchoredPosition = rectTransform.anchoredPosition; if (layer.image != null) { //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) //{ PSImage image = layer.image; ctrl.DrawImage(image, obj.gameObject); //} } ctrl.DrawLayers(layer.layers, obj.gameObject); //obj.transform.SetParent(parent.transform, false); //parent.transform; }
public void DrawLayer(Layer layer, GameObject parent) { //UnityEngine.UI.Image temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.PREFAB_PATH_IMAGE, typeof(UnityEngine.UI.Image)) as UnityEngine.UI.Image; UnityEngine.UI.Image panel = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, layer.name, parent);//GameObject.Instantiate(temp) as UnityEngine.UI.Image; panel.name = layer.name; ctrl.DrawLayers(layer.layers, panel.gameObject);//子节点 //for (int i = 0; i < layer.images.Length; i++) //{ PSImage image = layer.image; if (image.name.ToLower().Contains("background")) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; panel.sprite = sprite; RectTransform rectTransform = panel.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); //panel.transform.SetParent(parent.transform, false); //parent = parent.transform; } else { ctrl.DrawImage(image, panel.gameObject); } //} }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { UnityEngine.UI.RawImage pic; if (ownObj != null) { pic = ownObj.AddMissingComponent <UnityEngine.UI.RawImage>(); } else { pic = PSDImportUtility.LoadAndInstant <UnityEngine.UI.RawImage>(PSDImporterConst.ASSET_PATH_RAWIMAGE, image.name, parent); } // string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; // Texture2D texture = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Texture2D)) as Texture2D; // if (texture == null) // { // Debug.Log("loading asset at path: " + PSDImportUtility.baseDirectory + image.name); // } Texture2D texture = image.LoadAssetAtPath <Texture2D>() as Texture2D; pic.texture = texture as Texture; RectTransform rectTransform = pic.GetComponent <RectTransform>(); PSDImportUtility.SetAnchorMiddleCenter(rectTransform); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { switch (image.imageType) { case ImageType.Image: spriteImport.DrawImage(image, parent, parent); break; case ImageType.Texture: textureImport.DrawImage(image, parent, parent); break; case ImageType.Label: textImport.DrawImage(image, parent, parent); break; case ImageType.SliceImage: slicedSpriteImport.DrawImage(image, parent); break; case ImageType.LeftHalfImage: halfSpriteImport.DrawImage(image, parent); break; case ImageType.UpHalfImage: halfSpriteImport.DrawImage(image, parent); break; default: break; } }
public void DrawLayer(Layer layer, GameObject parent) { RectTransform obj = PSDImportUtility.LoadAndInstant <RectTransform>(PSDImporterConst.ASSET_PATH_LAYOUTELEMENT, layer.name, parent); RectTransform rectTransform = parent.GetComponent <RectTransform>(); obj.sizeDelta = new Vector2(layer.size.width, layer.size.height); obj.anchoredPosition = new Vector2(layer.position.x, layer.position.y); var le = obj.GetComponent <LayoutElement>(); le.preferredWidth = layer.size.width; le.preferredHeight = layer.size.height; if (layer.image != null) { //for (int imageIndex = 0; imageIndex < layer.layers.Length; imageIndex++) //{ PSImage image = layer.image; ctrl.DrawImage(image, obj.gameObject); //} } ctrl.DrawLayers(layer.layers, obj.gameObject); //obj.transform.SetParent(parent.transform, false); //parent.transform; }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj) { //UnityEngine.UI.Image pic = AssetDatabase.LoadAssetAtPath(PSDImporterConst.PREFAB_PATH_IMAGE, typeof(UnityEngine.UI.Image)) as UnityEngine.UI.Image; //string commonImagePath = PSDImporterConst.Globle_BASE_FOLDER + image.name.Replace(".", "/") + PSDImporterConst.PNG_SUFFIX; //Debug.Log("== CommonImagePath ====" + commonImagePath); //Sprite sprite = AssetDatabase.LoadAssetAtPath(commonImagePath, typeof(Sprite)) as Sprite; UnityEngine.UI.Image pic = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, parent); string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (sprite == null) { Debug.Log("loading asset at path: " + PSDImportUtility.baseDirectory + image.name); } //string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; //Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; //UnityEngine.UI.Image myImage = GameObject.Instantiate(pic) as UnityEngine.UI.Image; pic.sprite = sprite; pic.type = UnityEngine.UI.Image.Type.Sliced; RectTransform rectTransform = pic.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { RectTransform halfRectTrans = parent.GetComponent <RectTransform>(); //2017.1.20注:因为已经修改为layer会创建gameobject,所以不再需要加载预设,直接在parent下组装即可 //创建一个节点存放两张半图 //var halfRectTrans = PSDImportUtility.LoadAndInstant<RectTransform>(PSDImporterConst.ASSET_PATH_HALFIMAGE, image.name, parent); PSDImportUtility.SetAnchorMiddleCenter(halfRectTrans); halfRectTrans.sizeDelta = new Vector2(image.size.width, image.size.height); halfRectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y); UnityEngine.UI.Image leftOrUpSprite = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, halfRectTrans.gameObject); UnityEngine.UI.Image rightOrLowSprite = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, halfRectTrans.gameObject); string assetPath = ""; if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; } else { assetPath = PSDImporterConst.Globle_BASE_FOLDER + image.name.Replace(".", "/") + PSDImporterConst.PNG_SUFFIX; } Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (sprite == null) { Debug.Log("loading asset at path: " + assetPath); } leftOrUpSprite.sprite = sprite; rightOrLowSprite.sprite = sprite; RectTransform lOrURectTrans = leftOrUpSprite.GetComponent <RectTransform>(); RectTransform rOrLRectTrans = rightOrLowSprite.GetComponent <RectTransform>(); Vector2 size; if (image.imageType == ImageType.UpHalfImage) { size = new Vector2(image.size.width, image.size.height / 2f); lOrURectTrans.sizeDelta = size; lOrURectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y + image.size.height / 4f);//还未设置父节点,要用绝对坐标 rOrLRectTrans.sizeDelta = size; rOrLRectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y - image.size.height / 4f); rOrLRectTrans.localEulerAngles = new Vector3(180, 0, 0); } else { size = new Vector2(image.size.width / 2f, image.size.height); lOrURectTrans.sizeDelta = size; lOrURectTrans.anchoredPosition = new Vector2(image.position.x - image.size.width / 4f, image.position.y); rOrLRectTrans.sizeDelta = size; rOrLRectTrans.anchoredPosition = new Vector2(image.position.x + image.size.width / 4f, image.position.y); rOrLRectTrans.localEulerAngles = new Vector3(0, 180, 0); } }
public void DrawLayer(Layer layer, GameObject parent) { UnityEngine.UI.Scrollbar temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.ASSET_PATH_SCROLLBAR, typeof(UnityEngine.UI.Scrollbar)) as UnityEngine.UI.Scrollbar; UnityEngine.UI.Scrollbar scrollBar = GameObject.Instantiate(temp) as UnityEngine.UI.Scrollbar; scrollBar.transform.SetParent(parent.transform, false); //parent = parent.transform; string type = layer.arguments[0].ToUpper(); switch (type) { case "R": scrollBar.direction = Scrollbar.Direction.RightToLeft; break; case "L": scrollBar.direction = Scrollbar.Direction.LeftToRight; break; case "T": scrollBar.direction = Scrollbar.Direction.TopToBottom; break; case "B": scrollBar.direction = Scrollbar.Direction.BottomToTop; break; default: break; } float pecent; if (float.TryParse(layer.arguments[1], out pecent)) { scrollBar.size = pecent; } //for (int i = 0; i < layer.images.Length; i++) //{ PSImage image = layer.image; string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Debug.Log("== CommonImagePath ====" + assetPath); Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (image.name.ToLower().Contains("background")) { scrollBar.GetComponent <UnityEngine.UI.Image>().sprite = sprite; RectTransform rectTransform = scrollBar.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); } else if (image.name.ToLower().Contains("handle")) { scrollBar.handleRect.GetComponent <UnityEngine.UI.Image>().sprite = sprite; } //} }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { RectTransform halfRectTrans = parent.GetComponent <RectTransform>(); PSDImportUtility.SetAnchorMiddleCenter(halfRectTrans); halfRectTrans.sizeDelta = new Vector2(image.size.width, image.size.height); halfRectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y); UnityEngine.UI.Image leftOrUpSprite; if (ownObj != null) { leftOrUpSprite = ownObj.AddMissingComponent <UnityEngine.UI.Image>(); } else { leftOrUpSprite = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, halfRectTrans.gameObject); } //string assetPath = ""; //if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) //{ // assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; //} //else //{ // assetPath = PSDImporterConst.Globle_BASE_FOLDER + image.name.Replace(".", "/") + PSDImporterConst.PNG_SUFFIX; //} //Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; Sprite sprite = image.LoadAssetAtPath <Sprite>() as Sprite; // if (sprite == null) // { // Debug.Log("loading asset at path: " + assetPath); // } leftOrUpSprite.sprite = sprite; RectTransform lOrURectTrans = leftOrUpSprite.GetComponent <RectTransform>(); lOrURectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y); //添加镜像组件 var mirror = lOrURectTrans.gameObject.AddComponent <UGUI.Effects.Mirror>(); if (image.imageType == ImageType.BottomHalfImage) { mirror.mirrorType = UGUI.Effects.Mirror.MirrorType.Vertical; } else if (image.imageType == ImageType.LeftHalfImage) { mirror.mirrorType = UGUI.Effects.Mirror.MirrorType.Horizontal; } else if (image.imageType == ImageType.QuarterImage) { mirror.mirrorType = UGUI.Effects.Mirror.MirrorType.Quarter; } mirror.SetNativeSize(); }
public void DrawLayer(Layer layer, GameObject parent) { UnityEngine.UI.Button button = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Button>(PSDImporterConst.ASSET_PATH_BUTTON, layer.name, parent); if (layer.layers != null) { for (int imageIndex = 0; imageIndex < layer.layers.Length; imageIndex++) { PSImage image = layer.layers[imageIndex].image; string lowerName = image.name.ToLower(); if (image.imageType != ImageType.Label && image.imageType != ImageType.Texture) { if (image.imageSource == ImageSource.Custom || image.imageSource == ImageSource.Common) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (image.name.ToLower().Contains("normal")) { button.image.sprite = sprite; RectTransform rectTransform = button.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); adjustButtonBG(image.imageType, button); } else if (image.name.ToLower().Contains("pressed")) { button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap; UnityEngine.UI.SpriteState state = button.spriteState; state.pressedSprite = sprite; button.spriteState = state; } else if (image.name.ToLower().Contains("disabled")) { button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap; UnityEngine.UI.SpriteState state = button.spriteState; state.disabledSprite = sprite; button.spriteState = state; } else if (image.name.ToLower().Contains("highlighted")) { button.transition = UnityEngine.UI.Selectable.Transition.SpriteSwap; UnityEngine.UI.SpriteState state = button.spriteState; state.highlightedSprite = sprite; button.spriteState = state; } } } else { //ctrl.DrawImage(image, button.gameObject); ctrl.DrawLayer(layer.layers[imageIndex], button.gameObject); } } } }
//-------------------------------------------------------------------------- // private methods,按texture或image的要求导入图片到unity可加载的状态 //------------------------------------------------------------------------- private void ImportLayer(Layer layer, string baseDirectory) { if (layer.image != null) { //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) //{ // we need to fixup all images that were exported from PS //PSImage image = layer.images[imageIndex]; PSImage image = layer.image; if (image.imageType != ImageType.Label) { string texturePathName = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Debug.Log(texturePathName); // modify the importer settings TextureImporter textureImporter = AssetImporter.GetAtPath(texturePathName) as TextureImporter; if (textureImporter != null && image.imageType != ImageType.Texture) //Texture类型不设置属性 { textureImporter.textureType = TextureImporterType.Sprite; textureImporter.spriteImportMode = SpriteImportMode.Single; textureImporter.mipmapEnabled = false; //默认关闭mipmap if (image.imageSource == ImageSource.Global) { textureImporter.spritePackingTag = PSDImporterConst.Globle_FOLDER_NAME; } else { textureImporter.spritePackingTag = PSDImportUtility.baseFilename; } textureImporter.maxTextureSize = 2048; if (image.imageType == ImageType.SliceImage) //slice才需要设置border,可能需要根据实际修改border值 { setSpriteBorder(textureImporter, image.arguments); //textureImporter.spriteBorder = new Vector4(3, 3, 3, 3); // Set Default Slice type UnityEngine.UI.Image's border to Vector4 (3, 3, 3, 3) } AssetDatabase.WriteImportSettingsIfDirty(texturePathName); AssetDatabase.ImportAsset(texturePathName); } } //} } if (layer.layers != null) { //LoadLayers(); for (int layerIndex = 0; layerIndex < layer.layers.Length; layerIndex++) { ImportLayer(layer.layers[layerIndex], PSDImportUtility.baseDirectory); } } }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { UnityEngine.UI.Image pic; if (ownObj != null) { pic = ownObj.AddMissingComponent <UnityEngine.UI.Image>(); } else { pic = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, parent); } RectTransform rectTransform = pic.GetComponent <RectTransform>(); rectTransform.offsetMin = new Vector2(0.5f, 0.5f); rectTransform.offsetMax = new Vector2(0.5f, 0.5f); rectTransform.anchorMin = new Vector2(0.5f, 0.5f); rectTransform.anchorMax = new Vector2(0.5f, 0.5f); string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (sprite == null) { Debug.Log("loading asset at path: " + PSDImportUtility.baseDirectory + image.name); } pic.sprite = sprite; rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); } else if (image.imageSource == ImageSource.Global) { UnityEngine.UI.Image pic; if (ownObj != null) { pic = ownObj.AddMissingComponent <UnityEngine.UI.Image>(); } else { pic = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, parent); } RectTransform rectTransform = pic.GetComponent <RectTransform>(); rectTransform.offsetMin = new Vector2(0.5f, 0.5f); rectTransform.offsetMax = new Vector2(0.5f, 0.5f); rectTransform.anchorMin = new Vector2(0.5f, 0.5f); rectTransform.anchorMax = new Vector2(0.5f, 0.5f); SetGlobalImage(pic, image); pic.name = image.name; } }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { RectTransform halfRectTrans = parent.GetComponent <RectTransform>(); //2017.1.20注:因为已经修改为layer会创建gameobject,所以不再需要加载预设,直接在parent下组装即可 //创建一个节点存放两张半图 //var halfRectTrans = PSDImportUtility.LoadAndInstant<RectTransform>(PSDImporterConst.ASSET_PATH_HALFIMAGE, image.name, parent); PSDImportUtility.SetAnchorMiddleCenter(halfRectTrans); halfRectTrans.sizeDelta = new Vector2(image.size.width, image.size.height); halfRectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y); UnityEngine.UI.Image leftOrUpSprite = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Image>(PSDImporterConst.ASSET_PATH_IMAGE, image.name, halfRectTrans.gameObject); string assetPath = ""; if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; } else { assetPath = PSDImporterConst.Globle_BASE_FOLDER + image.name.Replace(".", "/") + PSDImporterConst.PNG_SUFFIX; } Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (sprite == null) { Debug.Log("loading asset at path: " + assetPath); } leftOrUpSprite.sprite = sprite; RectTransform lOrURectTrans = leftOrUpSprite.GetComponent <RectTransform>(); lOrURectTrans.anchoredPosition = new Vector2(image.position.x, image.position.y); //添加镜像组件 var mirror = lOrURectTrans.gameObject.AddComponent <UGUI.Effects.Mirror>(); if (image.imageType == ImageType.BottomHalfImage) { mirror.mirrorType = UGUI.Effects.Mirror.MirrorType.Vertical; } else if (image.imageType == ImageType.LeftHalfImage) { mirror.mirrorType = UGUI.Effects.Mirror.MirrorType.Horizontal; } else if (image.imageType == ImageType.QuarterImage) { mirror.mirrorType = UGUI.Effects.Mirror.MirrorType.Quarter; } mirror.SetNativeSize(); }
private Tab ImportTabLayer(Layer layer, GameObject parent) { string tabName = layer.name.Substring(0, layer.name.IndexOf("_Tab")); string tag = layer.name.LastIndexOf(':') == -1 ? tabName : layer.name.Substring(layer.name.LastIndexOf(':') + 1); //Debug.LogWarning("tab name = " + tabName + " tab tag = " + tag); Tab tab = PSDImportUtility.LoadAndInstant <Tab>(PSDImporterConst.ASSET_PATH_TAB, tabName, parent); tab.tag = tag; if (layer.layers == null) { Debug.LogError("error! bad tab layers."); return(null); } for (int index = 0; index < layer.layers.Length; index++) { Layer subLayer = layer.layers[index]; PSImage image = subLayer.image; if (image != null) { string lowerName = image.name.ToLower(); if (lowerName.Contains("_tabsel")) { ctrl.DrawImage(image, tab.gameObject, tab.graphic.gameObject); } else if (lowerName.Contains("_tabunsel")) { ctrl.DrawImage(image, tab.gameObject, tab.targetGraphic.gameObject); } else { ctrl.DrawImage(image, tab.gameObject); } } else { if (subLayer.name.ToLower().Contains("_page")) { string name = subLayer.name.Substring(0, subLayer.name.Length - 5); tab.page.gameObject.name = name; ctrl.DrawLayers(subLayer.layers, tab.page.gameObject); //跳过page层,只绘制子 } else { ctrl.DrawLayer(subLayer, tab.gameObject); } } } return(tab); }
//------------------------------------------------------------------ //when it's a common psd, then move the asset to special folder //------------------------------------------------------------------ private void MoveAsset(Layer layer, string baseDirectory) { if (layer.image != null) { string newPath = PSDImporterConst.Globle_BASE_FOLDER; if (layer.name == PSDImporterConst.IMAGE) { newPath += PSDImporterConst.IMAGE + "/"; } else if (layer.name == PSDImporterConst.NINE_SLICE) { newPath += PSDImporterConst.NINE_SLICE + "/"; } if (!System.IO.Directory.Exists(newPath)) { System.IO.Directory.CreateDirectory(newPath); Debug.Log("creating new folder : " + newPath); } AssetDatabase.Refresh(); //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) //{ // we need to fixup all images that were exported from PS PSImage image = layer.image; if (image.imageSource == ImageSource.Global) { string texturePathName = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; string targetPathName = newPath + image.name + PSDImporterConst.PNG_SUFFIX; if (File.Exists(texturePathName)) { AssetDatabase.MoveAsset(texturePathName, targetPathName); Debug.Log(texturePathName); Debug.Log(targetPathName); } } //} } if (layer.layers != null) { for (int layerIndex = 0; layerIndex < layer.layers.Length; layerIndex++) { MoveAsset(layer.layers[layerIndex], PSDImportUtility.baseDirectory); } } }
public void DrawLayer(Layer layer, GameObject parent) { //UnityEngine.UI.Toggle temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.PREFAB_PATH_TOGGLE, typeof(UnityEngine.UI.Toggle)) as UnityEngine.UI.Toggle; UnityEngine.UI.Toggle toggle = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Toggle>(PSDImporterConst.ASSET_PATH_TOGGLE, layer.name, parent);// GameObject.Instantiate(temp) as UnityEngine.UI.Toggle; if (layer.image != null) { //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) //{ PSImage image = layer.image; if (image.name.ToLower().Contains("background")) { if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; toggle.image.sprite = sprite; RectTransform rectTransform = toggle.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); //rectTransform.SetParent(parent.transform, true); //PosLoader posloader = toggle.gameObject.AddComponent<PosLoader>(); //posloader.worldPos = rectTransform.position; } } else if (image.name.ToLower().Contains("mask")) { if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; toggle.graphic.GetComponent <UnityEngine.UI.Image>().sprite = sprite; } } else { ctrl.DrawImage(image, toggle.graphic.gameObject); } //} } }
public static void SetGlobalImage(Image image, PSImage psImage) { string commonImagePath = PSDImporterConst.Globle_BASE_FOLDER + psImage.name.Replace(".", "/") + PSDImporterConst.PNG_SUFFIX; Debug.Log("== CommonImagePath ====" + commonImagePath); Sprite sprite = AssetDatabase.LoadAssetAtPath(commonImagePath, typeof(Sprite)) as Sprite; image.sprite = sprite; if (psImage.imageType == ImageType.SliceImage) { image.type = UnityEngine.UI.Image.Type.Sliced; } RectTransform rectTransform = image.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(psImage.size.width, psImage.size.height); rectTransform.anchoredPosition = new Vector2(psImage.position.x, psImage.position.y); }
public static Object LoadAssetAtPath <T>(this PSImage image) { string assetPath = ""; if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; } else { assetPath = PSDImporterConst.Globle_BASE_FOLDER + image.name.Replace(".", "/") + PSDImporterConst.PNG_SUFFIX; } Object obj = AssetDatabase.LoadAssetAtPath(assetPath, typeof(T)); if (obj == null) { Debug.LogWarning("loading asset is null, at path: " + assetPath); } return(obj); }
public static void SetOutline(PSImage image, Text text) { var keyWord = "outline"; var lowerName = image.name.ToLower(); if (lowerName.Contains(keyWord)) { Outline outline = text.gameObject.GetComponent <Outline>(); if (outline == null) { outline = text.gameObject.AddComponent <Outline>(); } outline.effectColor = new Color(0f / 255, 0f / 255, 0f / 255, 255f / 255); var starIndex = lowerName.IndexOf(keyWord); var dis = lowerName.Substring(starIndex + keyWord.Length, 1); int distance; if (int.TryParse(dis, out distance)) { outline.effectDistance = new Vector2(distance, -distance); } } }
public void DrawLayer(Layer layer, GameObject parent) { RectTransform obj = PSDImportUtility.LoadAndInstant <RectTransform>(PSDImporterConst.ASSET_PATH_EMPTY, layer.name, parent); obj.offsetMin = Vector2.zero; obj.offsetMax = Vector2.zero; obj.anchorMin = Vector2.zero; obj.anchorMax = Vector2.one; RectTransform rectTransform = parent.GetComponent <RectTransform>(); obj.sizeDelta = rectTransform.sizeDelta; obj.anchoredPosition = rectTransform.anchoredPosition; if (layer.image != null) { PSImage image = layer.image; //ctrl.DrawImage(image, obj.gameObject); ctrl.DrawImage(image, parent, obj.gameObject); } ctrl.DrawLayers(layer.layers, obj.gameObject); }
public void DrawLayer(Layer layer, GameObject parent) { UnityEngine.UI.Toggle toggle = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Toggle>(PSDImporterConst.ASSET_PATH_TOGGLE, layer.name, parent); if (layer.layers == null) { Debug.LogError("error! bad toggle layers."); return; } for (int index = 0; index < layer.layers.Length; index++) { Layer subLayer = layer.layers[index]; PSImage image = subLayer.image; if (image != null) { string lowerName = image.name.ToLower(); if (lowerName.Contains("_checkmark")) { ctrl.DrawImage(image, toggle.gameObject, toggle.graphic.gameObject); } else if (lowerName.Contains("_background")) { ctrl.DrawImage(image, toggle.gameObject, toggle.targetGraphic.gameObject); } else { ctrl.DrawImage(image, toggle.gameObject); } } else { ctrl.DrawLayer(subLayer, toggle.gameObject); } } }
public void DrawLayer(Layer layer, GameObject parent) { //UnityEngine.UI.Slider temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.PREFAB_PATH_SLIDER, typeof(UnityEngine.UI.Slider)) as UnityEngine.UI.Slider; UnityEngine.UI.Slider slider = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Slider>(PSDImporterConst.ASSET_PATH_SLIDER, layer.name, parent); //GameObject.Instantiate(temp) as UnityEngine.UI.Slider; RectTransform rectTransform = slider.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(layer.size.width, layer.size.height); rectTransform.anchoredPosition = new Vector2(layer.position.x, layer.position.y); //slider.transform.SetParent(parent.transform, true); //parent = parent.transform; PosLoader posloader = slider.gameObject.AddComponent <PosLoader>(); posloader.worldPos = rectTransform.position; string type = layer.arguments[0].ToUpper(); switch (type) { case "R": slider.direction = Slider.Direction.RightToLeft; break; case "L": slider.direction = Slider.Direction.LeftToRight; break; case "T": slider.direction = Slider.Direction.TopToBottom; break; case "B": slider.direction = Slider.Direction.BottomToTop; break; default: break; } for (int i = 0; i < layer.layers.Length; i++) { PSImage image = layer.layers[i].image; string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; if (image.name.ToLower().Contains("bg")) { var bgRect = slider.transform.Find("Background").GetComponent <RectTransform>(); var bgImage = bgRect.GetComponent <UnityEngine.UI.Image>(); if (image.imageType != ImageType.SliceImage) { bgImage.type = Image.Type.Simple; } bgImage.sprite = sprite; bgRect.sizeDelta = new Vector2(image.size.width, image.size.height); } else if (image.name.ToLower().Contains("fill")) { var fillImage = slider.fillRect.GetComponent <UnityEngine.UI.Image>(); if (image.imageType != ImageType.SliceImage) { fillImage.type = Image.Type.Simple; } fillImage.sprite = sprite; var fillArea = slider.transform.Find("Fill Area").GetComponent <RectTransform>(); fillArea.sizeDelta = new Vector2(image.size.width, image.size.height); } else if (image.name.ToLower().Contains("handle")) //默认没有handle { var handleRectTrans = slider.transform.Find("Handle Slide Area/Handle").GetComponent <RectTransform>(); var handleSprite = handleRectTrans.GetComponent <UnityEngine.UI.Image>(); slider.handleRect = handleRectTrans; handleSprite.sprite = sprite; handleRectTrans.gameObject.SetActive(true); } } }
public void DrawLayer(Layer layer, GameObject parent) { UnityEngine.UI.InputField temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.ASSET_PATH_INPUTFIELD, typeof(UnityEngine.UI.InputField)) as UnityEngine.UI.InputField; UnityEngine.UI.InputField inputfield = GameObject.Instantiate(temp) as UnityEngine.UI.InputField; inputfield.transform.SetParent(parent.transform, false);//.parent = parent.transform; inputfield.name = layer.name; // 背景尺寸,用来限制文本框尺寸 float _bgSize = 0; for (int i = 0; i < layer.layers.Length; ++i) { var _temp = layer.layers[i]; if (_temp.image != null) { //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) //{ PSImage image = _temp.image; if (image.imageType == ImageType.Label) { if (image.name.ToLower().Contains("text")) { this.pSDImportCtrl.DrawLayer(_temp, inputfield.gameObject); var _text = PSDImportUtility.canvas.transform.Find(_temp.name).GetComponent <Text>(); RectTransform _rectTransform = _text.GetComponent <RectTransform>(); // 需要重设锚点,目前默认left var _offsetMin = _rectTransform.offsetMin; var _offsetMax = _rectTransform.offsetMax; _rectTransform.pivot = new Vector2(0, 1); _rectTransform.offsetMin = _offsetMin; _rectTransform.offsetMax = _offsetMax; if (Math.Abs(_bgSize) < float.Epsilon) { for (int j = 0; j < layer.layers.Length; ++j) { var _layerLayer = layer.layers[i]; if (_layerLayer.image != null) { if (_layerLayer.image.imageType != ImageType.Label && _layerLayer.image.name.Contains("background")) { _bgSize = _layerLayer.image.size.width; break; } } } } if (_rectTransform.sizeDelta.x < _bgSize) { _rectTransform.sizeDelta = new Vector2(_bgSize, _rectTransform.sizeDelta.y); } _text.supportRichText = false; _text.text = ""; if (inputfield.textComponent != null) { Object.DestroyImmediate(inputfield.textComponent.gameObject); } inputfield.textComponent = _text; //UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.textComponent;//inputfield.transform.Find("Text").GetComponent<UnityEngine.UI.Text>(); //Color color; //if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) //{ // text.color = color; //} //int size; //if (int.TryParse(image.arguments[2], out size)) //{ // text.fontSize = size; //} } else if (image.name.ToLower().Contains("holder")) { this.pSDImportCtrl.DrawLayer(_temp, inputfield.gameObject); if (inputfield.placeholder != null) { Object.DestroyImmediate(inputfield.placeholder.gameObject); } inputfield.placeholder = PSDImportUtility.canvas.transform.Find(_temp.name).GetComponent <Text>(); ((Text)inputfield.placeholder).supportRichText = false; //UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.placeholder;//.transform.Find("Placeholder").GetComponent<UnityEngine.UI.Text>(); //Color color; //if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) //{ // text.color = color; //} //int size; //if (int.TryParse(image.arguments[2], out size)) //{ // text.fontSize = size; //} } } else { if (image.name.ToLower().Contains("background")) { if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; inputfield.image.sprite = sprite; RectTransform rectTransform = inputfield.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); _bgSize = image.size.width; rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); } } } //} } } //if (layer.image != null) //{ // //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) // //{ // PSImage image = layer.image; // if (image.imageType == ImageType.Label) // { // if (image.name.ToLower().Contains("text")) // { // UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.textComponent;//inputfield.transform.Find("Text").GetComponent<UnityEngine.UI.Text>(); // Color color; // if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) // { // text.color = color; // } // int size; // if (int.TryParse(image.arguments[2], out size)) // { // text.fontSize = size; // } // } // else if (image.name.ToLower().Contains("holder")) // { // UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.placeholder;//.transform.Find("Placeholder").GetComponent<UnityEngine.UI.Text>(); // Color color; // if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) // { // text.color = color; // } // int size; // if (int.TryParse(image.arguments[2], out size)) // { // text.fontSize = size; // } // } // } // else // { // if (image.name.ToLower().Contains("background")) // { // if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) // { // string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; // Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; // inputfield.image.sprite = sprite; // RectTransform rectTransform = inputfield.GetComponent<RectTransform>(); // rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); // rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); // } // } // } // //} //} }
//------------------------------------------------------------------ //when it's a common psd, then move the asset to special folder //------------------------------------------------------------------ private void MoveAsset(Layer layer, string baseDirectory) { if (layer.image != null) { string newPath = PSDImporterConst.Globle_BASE_FOLDER; if (layer.name == PSDImporterConst.IMAGE) { newPath += PSDImporterConst.IMAGE + "/"; } else if (layer.name == PSDImporterConst.NINE_SLICE) { newPath += PSDImporterConst.NINE_SLICE + "/"; } if (!System.IO.Directory.Exists(newPath)) { System.IO.Directory.CreateDirectory(newPath); Debug.Log("creating new folder : " + newPath); } AssetDatabase.Refresh(); PSImage image = layer.image; if (image.imageSource == ImageSource.Global) { string texturePathName = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; string targetPathName = newPath + image.name + PSDImporterConst.PNG_SUFFIX; if (File.Exists(targetPathName)) { if (File.Exists(texturePathName)) { File.Copy(texturePathName, targetPathName, true); //spriteB按照spriteA的导入设置重新导入一遍(为了meta) string pathSpriteA = texturePathName; string pathSpriteB = targetPathName; TextureImporter textureImporterSpriteA = TextureImporter.GetAtPath(pathSpriteA) as TextureImporter; TextureImporter textureImporterSpriteB = TextureImporter.GetAtPath(pathSpriteB) as TextureImporter; TextureImporterSettings textureImporterSettings = new TextureImporterSettings(); textureImporterSpriteA.ReadTextureSettings(textureImporterSettings); textureImporterSpriteB.SetTextureSettings(textureImporterSettings); AssetDatabase.WriteImportSettingsIfDirty(pathSpriteB); AssetDatabase.ImportAsset(pathSpriteB); File.Delete(texturePathName); } } else { AssetDatabase.MoveAsset(texturePathName, targetPathName); } } } if (layer.layers != null) { for (int layerIndex = 0; layerIndex < layer.layers.Length; layerIndex++) { MoveAsset(layer.layers[layerIndex], PSDImportUtility.baseDirectory); } } }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { UnityEngine.UI.Text myText; if (ownObj != null) { myText = ownObj.AddComponent <UnityEngine.UI.Text>(); } else { myText = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Text>(PSDImporterConst.ASSET_PATH_TEXT, image.name, parent); } RectTransform rectTransform = myText.GetComponent <RectTransform>(); rectTransform.offsetMin = new Vector2(0.5f, 0.5f); rectTransform.offsetMax = new Vector2(0.5f, 0.5f); rectTransform.anchorMin = new Vector2(0.5f, 0.5f); rectTransform.anchorMax = new Vector2(0.5f, 0.5f); //UnityEngine.UI.Text myText = PSDImportUtility.LoadAndInstant<Text>(PSDImporterConst.ASSET_PATH_TEXT, image.name, parent); // myText.color = image.arguments[0]; // myText.font = image.arguments[1]; Debug.Log("Label Color : " + image.arguments[0]); Debug.Log("fontSize : " + image.arguments[2]); Color color; if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) { myText.color = color; } else { Debug.Log(image.arguments[0]); } float size; if (float.TryParse(image.arguments[2], out size)) { myText.fontSize = (int)size; } myText.text = image.arguments[3]; //设置字体,注意unity中的字体名需要和导出的xml中的一致 string fontFolder; if (image.arguments[1].ToLower().Contains("static")) { fontFolder = PSDImporterConst.FONT_STATIC_FOLDER; } else { fontFolder = fontFolder = PSDImporterConst.FONT_FOLDER; } string fontFullName = fontFolder + image.arguments[1] + PSDImporterConst.FONT_SUFIX; Debug.Log("font name ; " + fontFullName); var font = AssetDatabase.LoadAssetAtPath(fontFullName, typeof(Font)) as Font; if (font == null) { Debug.LogWarning("Load font failed : " + fontFullName); } else { myText.font = font; } //ps的size在unity里面太小,文本会显示不出来,暂时选择溢出 myText.verticalOverflow = VerticalWrapMode.Overflow; myText.horizontalOverflow = HorizontalWrapMode.Overflow; //设置对齐 if (image.arguments.Length >= 5) { myText.alignment = ParseAlignmentPS2UGUI(image.arguments[4]); } rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); }
public void DrawLayer(Layer layer, GameObject parent) { UnityEngine.UI.InputField temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.ASSET_PATH_INPUTFIELD, typeof(UnityEngine.UI.InputField)) as UnityEngine.UI.InputField; UnityEngine.UI.InputField inputfield = GameObject.Instantiate(temp) as UnityEngine.UI.InputField; inputfield.transform.SetParent(parent.transform, false);//.parent = parent.transform; inputfield.name = layer.name; inputfield.placeholder?.gameObject.SetActive(false); //if (layer.image != null) if (layer.layers != null) { for (int imageIndex = 0; imageIndex < layer.layers.Length; imageIndex++) { PSImage image = layer.layers[imageIndex].image; //PSImage image = layer.image; if (image.imageType == ImageType.Label) { if (image.name.ToLower().Contains("text")) { UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.textComponent;//inputfield.transform.Find("Text").GetComponent<UnityEngine.UI.Text>(); Color color; if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) { text.color = color; } int size; float sizeFloat; if (float.TryParse(image.arguments[2], out sizeFloat)) { size = Mathf.RoundToInt(sizeFloat); text.fontSize = size; } text.text = image.arguments[3]; //设置字体,注意unity中的字体名需要和导出的xml中的一致 string fontFolder; if (image.arguments[1].ToLower().Contains("static")) { fontFolder = PSDImporterConst.FONT_STATIC_FOLDER; } else { fontFolder = fontFolder = PSDImporterConst.FONT_FOLDER; } string fontFullName = fontFolder + image.arguments[1] + PSDImporterConst.FONT_SUFIX; Debug.Log("font name ; " + fontFullName); var font = AssetDatabase.LoadAssetAtPath(fontFullName, typeof(Font)) as Font; if (font == null) { Debug.LogWarning("Load font failed : " + fontFullName); } else { text.font = font; } //ps的size在unity里面太小,文本会显示不出来,暂时选择溢出 text.verticalOverflow = VerticalWrapMode.Overflow; text.horizontalOverflow = HorizontalWrapMode.Overflow; //设置对齐 if (image.arguments.Length >= 5) { text.alignment = ParseAlignmentPS2UGUI(image.arguments[4]); } else { text.alignment = TextAnchor.MiddleLeft; } TextImport.SetOutline(image, text); } else if (image.name.ToLower().Contains("holder")) { /* * UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.placeholder;//.transform.Find("Placeholder").GetComponent<UnityEngine.UI.Text>(); * Color color; * if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) * { * text.color = color; * } * * int size; * float sizeFloat; * if (float.TryParse(image.arguments[2], out sizeFloat)) * { * size = Mathf.RoundToInt(sizeFloat); * text.fontSize = size; * } * * text.text = image.arguments[3]; * * //设置字体,注意unity中的字体名需要和导出的xml中的一致 * string fontFolder; * * if (image.arguments[1].ToLower().Contains("static")) * { * fontFolder = PSDImporterConst.FONT_STATIC_FOLDER; * } * else * { * fontFolder = fontFolder = PSDImporterConst.FONT_FOLDER; * } * string fontFullName = fontFolder + image.arguments[1] + PSDImporterConst.FONT_SUFIX; * Debug.Log("font name ; " + fontFullName); * var font = AssetDatabase.LoadAssetAtPath(fontFullName, typeof(Font)) as Font; * if (font == null) * { * Debug.LogWarning("Load font failed : " + fontFullName); * } * else * { * text.font = font; * } * //ps的size在unity里面太小,文本会显示不出来,暂时选择溢出 * text.verticalOverflow = VerticalWrapMode.Overflow; * text.horizontalOverflow = HorizontalWrapMode.Overflow; * //设置对齐 * if (image.arguments.Length >= 5) * text.alignment = ParseAlignmentPS2UGUI(image.arguments[4]); * else * { * text.alignment = TextAnchor.MiddleLeft; * }*/ } } else { if (image.name.ToLower().Contains("background")) { if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; inputfield.image.sprite = sprite; RectTransform rectTransform = inputfield.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); } else if (image.imageSource == ImageSource.Global) { SpriteImport.SetGlobalImage(inputfield.image, image); } } } } } }
public void DrawImage(PSImage image, GameObject parent, GameObject ownObj = null) { UnityEngine.UI.Text myText; if (ownObj != null) { myText = ownObj.AddMissingComponent <UnityEngine.UI.Text>(); } else { myText = PSDImportUtility.LoadAndInstant <UnityEngine.UI.Text>(PSDImporterConst.ASSET_PATH_TEXT, image.name, parent); } RectTransform rectTransform = myText.GetComponent <RectTransform>(); rectTransform.SetAnchorMiddleCenter(); //UnityEngine.UI.Text myText = PSDImportUtility.LoadAndInstant<Text>(PSDImporterConst.ASSET_PATH_TEXT, image.name, parent); // myText.color = image.arguments[0]; // myText.font = image.arguments[1]; Debug.Log("Label Color : " + image.arguments[0]); Debug.Log("fontSize : " + image.arguments[2]); Color color; if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) { if (image.opacity > -1) { color.a = image.opacity / 100f; Debug.Log("Opacity:" + color.a); } color.r = (float)Math.Pow((color.r), 0.45); color.g = (float)Math.Pow((color.g), 0.45); color.b = (float)Math.Pow((color.b), 0.45); myText.color = color; } else { Debug.Log(image.arguments[0]); } float size; if (float.TryParse(image.arguments[2], out size)) { myText.fontSize = (int)Math.Round(size); } myText.text = image.arguments[3]; //设置字体,注意unity中的字体名需要和导出的xml中的一致 string fontFolder; if (image.arguments[1].ToLower().Contains("static")) { fontFolder = PSDImporterConst.FONT_STATIC_FOLDER; } else { fontFolder = PSDImporterConst.FONT_FOLDER; } string fontFullName = fontFolder + image.arguments[1] + PSDImporterConst.FONT_SUFIX; Debug.Log("font name ; " + fontFullName); var font = AssetDatabase.LoadAssetAtPath(fontFullName, typeof(Font)) as Font; if (font == null) { Debug.LogWarning("Load font failed : " + fontFullName); } else { myText.font = font; } //ps的size在unity里面太小,文本会显示不出来,暂时选择溢出 myText.verticalOverflow = VerticalWrapMode.Overflow; myText.horizontalOverflow = HorizontalWrapMode.Overflow; //设置对齐 if (image.arguments.Length >= 5) { myText.alignment = ParseAlignmentPS2UGUI(image.arguments[4]); } else { // 默认居中 myText.alignment = TextAnchor.MiddleLeft; } // OutLine if (!string.IsNullOrEmpty(image.outline)) { Debug.LogError(image.outline); var _temp = image.outline.Split('|'); // 第一位颜色 Color effectColor; Outline _outline = ownObj.AddMissingComponent <Outline>(); if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + _temp[0]), out effectColor)) { _outline.effectColor = effectColor; } // 第二位 // 第三位 } rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); }
public void DrawLayer(Layer layer, GameObject parent) { UnityEngine.UI.InputField temp = AssetDatabase.LoadAssetAtPath(PSDImporterConst.ASSET_PATH_INPUTFIELD, typeof(UnityEngine.UI.InputField)) as UnityEngine.UI.InputField; UnityEngine.UI.InputField inputfield = GameObject.Instantiate(temp) as UnityEngine.UI.InputField; inputfield.transform.SetParent(parent.transform, false);//.parent = parent.transform; inputfield.name = layer.name; if (layer.image != null) { //for (int imageIndex = 0; imageIndex < layer.images.Length; imageIndex++) //{ PSImage image = layer.image; if (image.imageType == ImageType.Label) { if (image.name.ToLower().Contains("text")) { UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.textComponent; //inputfield.transform.Find("Text").GetComponent<UnityEngine.UI.Text>(); Color color; if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) { text.color = color; } int size; if (int.TryParse(image.arguments[2], out size)) { text.fontSize = size; } } else if (image.name.ToLower().Contains("holder")) { UnityEngine.UI.Text text = (UnityEngine.UI.Text)inputfield.placeholder; //.transform.Find("Placeholder").GetComponent<UnityEngine.UI.Text>(); Color color; if (UnityEngine.ColorUtility.TryParseHtmlString(("#" + image.arguments[0]), out color)) { text.color = color; } int size; if (int.TryParse(image.arguments[2], out size)) { text.fontSize = size; } } } else { if (image.name.ToLower().Contains("background")) { if (image.imageSource == ImageSource.Common || image.imageSource == ImageSource.Custom) { string assetPath = PSDImportUtility.baseDirectory + image.name + PSDImporterConst.PNG_SUFFIX; Sprite sprite = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Sprite)) as Sprite; inputfield.image.sprite = sprite; RectTransform rectTransform = inputfield.GetComponent <RectTransform>(); rectTransform.sizeDelta = new Vector2(image.size.width, image.size.height); rectTransform.anchoredPosition = new Vector2(image.position.x, image.position.y); } } } //} } }