Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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));
                }
            };
        }
Exemplo n.º 7
0
        public override GameObject Render(Renderer renderer)
        {
            var go = PrefabCreator.CreateUIGameObject(Name);

            return(go);
        }
Exemplo n.º 8
0
        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);
        }