public override void OnImportAsset(AssetImportContext ctx) { var assetName = Path.GetFileName(ctx.assetPath).Replace(".layout", ""); var spriteRootPath = EditorUtil.ToUnityPath(Path.Combine(EditorUtil.GetBaumSpritesPath(), assetName)); var fontRootPath = EditorUtil.ToUnityPath(EditorUtil.GetBaumFontsPath()); var creator = new PrefabCreator(spriteRootPath, fontRootPath, ctx.assetPath); var go = creator.Create(); ctx.AddObjectToAsset("main obj", go); ctx.SetMainObject(go); }
public override GameObject Render(Renderer renderer) { var go = PrefabCreator.CreateUIGameObject(Name); var rect = go.GetComponent <RectTransform>(); rect.localPosition = renderer.CalcPosition(canvasPosition, sizeDelta); rect.sizeDelta = sizeDelta; var raw = go.AddComponent <RawData>(); raw.Info["font_size"] = fontSize; raw.Info["align"] = align; var text = go.AddComponent <Text>(); text.text = message; text.font = renderer.GetFont(font); text.fontSize = Mathf.RoundToInt(fontSize); text.color = fontColor; text.horizontalOverflow = HorizontalWrapMode.Overflow; text.verticalOverflow = VerticalWrapMode.Overflow; var fixedPos = rect.localPosition; switch (align) { case "left": text.alignment = TextAnchor.MiddleLeft; rect.pivot = new Vector2(0.0f, 0.5f); fixedPos.x -= sizeDelta.x / 2.0f; break; case "center": text.alignment = TextAnchor.MiddleCenter; rect.pivot = new Vector2(0.5f, 0.5f); break; case "right": text.alignment = TextAnchor.MiddleRight; rect.pivot = new Vector2(1.0f, 0.5f); fixedPos.x += sizeDelta.x / 2.0f; break; } rect.localPosition = fixedPos; var d = rect.sizeDelta; d.y = virtualHeight; rect.sizeDelta = d; return(go); }
protected virtual GameObject CreateSelf(Renderer renderer) { var go = PrefabCreator.CreateUIGameObject(Name); var rect = go.GetComponent <RectTransform>(); var area = CalcArea(); rect.sizeDelta = area.Size; rect.anchoredPosition = renderer.CalcPosition(area.Min, area.Size); SetMaskImage(renderer, go); return(go); }
protected override GameObject CreateSelf(Renderer renderer) { var go = PrefabCreator.CreateUIGameObject(Name); var rect = go.GetComponent <RectTransform>(); var area = CalcArea(); rect.sizeDelta = area.Size; rect.anchoredPosition = Vector2.zero; SetMaskImage(renderer, go); return(go); }
public override GameObject Render(Renderer renderer) { var go = PrefabCreator.CreateUIGameObject(Name); var rect = go.GetComponent <RectTransform>(); rect.anchoredPosition = renderer.CalcPosition(canvasPosition, sizeDelta); rect.sizeDelta = sizeDelta; var image = go.AddComponent <Image>(); image.sprite = renderer.GetSprite(spriteName); image.type = Image.Type.Sliced; image.color = new Color(1.0f, 1.0f, 1.0f, opacity / 100.0f); if (background) { rect.anchorMin = Vector2.zero; rect.anchorMax = Vector2.one; rect.sizeDelta = Vector2.zero; } return(go); }
public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { var changed = false; // Create Directory foreach (var asset in importedAssets) { if (!asset.Contains(EditorUtil.ImportDirectoryPath)) { continue; } if (!string.IsNullOrEmpty(Path.GetExtension(asset))) { continue; } CreateSpritesDirectory(asset); changed = true; } // Slice Sprite foreach (var asset in importedAssets) { if (!asset.Contains(EditorUtil.ImportDirectoryPath)) { continue; } if (!asset.EndsWith(".png", System.StringComparison.Ordinal)) { continue; } var assetPath = SliceSprite(asset); AssetDatabase.ImportAsset(assetPath); changed = true; } if (changed) { Debug.Log("AssetDatabase.Refresh();"); AssetDatabase.Refresh(); } EditorApplication.delayCall += () => { // Delete Directory foreach (var asset in importedAssets) { if (!asset.Contains(EditorUtil.ImportDirectoryPath)) { continue; } if (!string.IsNullOrEmpty(Path.GetExtension(asset))) { continue; } Debug.LogFormat("[Baum2] Delete Directory: {0}", EditorUtil.ToUnityPath(asset)); AssetDatabase.DeleteAsset(EditorUtil.ToUnityPath(asset)); changed = true; } // Create Prefab foreach (var asset in importedAssets) { if (!asset.Contains(EditorUtil.ImportDirectoryPath)) { continue; } if (!asset.EndsWith(".layout.txt", System.StringComparison.Ordinal)) { continue; } var name = Path.GetFileName(asset).Replace(".layout.txt", ""); var spriteRootPath = EditorUtil.ToUnityPath(Path.Combine(EditorUtil.GetBaumSpritesPath(), name)); var fontRootPath = EditorUtil.ToUnityPath(EditorUtil.GetBaumFontsPath()); var creator = new PrefabCreator(spriteRootPath, fontRootPath, asset); var go = creator.Create(); // sh専用処理 var saveDirectoryPath = Path.Combine(Application.dataPath, "Asset Bundles", $"Baum UI {name}"); Directory.CreateDirectory(saveDirectoryPath); var savePath = EditorUtil.ToUnityPath(Path.Combine(saveDirectoryPath, name + ".prefab")); #if UNITY_2018_3_OR_NEWER PrefabUtility.SaveAsPrefabAsset(go, savePath); #else Object originalPrefab = AssetDatabase.LoadAssetAtPath <GameObject>(savePath); if (originalPrefab == null) { originalPrefab = PrefabUtility.CreateEmptyPrefab(savePath); } PrefabUtility.ReplacePrefab(go, originalPrefab, ReplacePrefabOptions.ReplaceNameBased); #endif GameObject.DestroyImmediate(go); Debug.LogFormat("[Baum2] Create Prefab: {0}", savePath); AssetDatabase.DeleteAsset(EditorUtil.ToUnityPath(asset)); } }; }
public override GameObject Render(Renderer renderer) { var go = PrefabCreator.CreateUIGameObject(Name); return(go); }
public override GameObject Render(Renderer renderer) { var go = PrefabCreator.CreateUIGameObject(Name); var rect = go.GetComponent <RectTransform>(); rect.anchoredPosition = renderer.CalcPosition(canvasPosition, sizeDelta); rect.sizeDelta = sizeDelta; var raw = go.AddComponent <RawData>(); raw.Info["font_size"] = fontSize; raw.Info["align"] = align; var text = go.AddComponent <Text>(); text.text = message; text.font = renderer.GetFont(font); text.fontSize = Mathf.RoundToInt(fontSize); text.color = fontColor; bool middle = true; if (type == "point") { text.horizontalOverflow = HorizontalWrapMode.Overflow; text.verticalOverflow = VerticalWrapMode.Overflow; middle = true; } else if (type == "paragraph") { text.horizontalOverflow = HorizontalWrapMode.Wrap; text.verticalOverflow = VerticalWrapMode.Overflow; middle = !message.Contains("\n"); } else { Debug.LogError("unknown type " + type); } var fixedPos = rect.anchoredPosition; switch (align) { case "left": text.alignment = middle ? TextAnchor.MiddleLeft : TextAnchor.UpperLeft; rect.pivot = new Vector2(0.0f, 0.5f); fixedPos.x -= sizeDelta.x / 2.0f; break; case "center": text.alignment = middle ? TextAnchor.MiddleCenter : TextAnchor.UpperCenter; rect.pivot = new Vector2(0.5f, 0.5f); break; case "right": text.alignment = middle ? TextAnchor.MiddleRight : TextAnchor.UpperRight; rect.pivot = new Vector2(1.0f, 0.5f); fixedPos.x += sizeDelta.x / 2.0f; break; } rect.anchoredPosition = fixedPos; var d = rect.sizeDelta; d.y = virtualHeight; rect.sizeDelta = d; if (enableStroke) { var outline = go.AddComponent <Outline>(); outline.effectColor = strokeColor; outline.effectDistance = new Vector2(strokeSize / 2.0f, -strokeSize / 2.0f); outline.useGraphicAlpha = false; } return(go); }