Beispiel #1
0
    public GameObject InstantiateWidget(Canvas canvas, SVGSpriteRef spriteRef, SVGUIWidgetType widgetType)
    {
        SVGSpriteAssetFile spriteAsset;

        if (this.m_GeneratedSpritesFiles.TryGetValue(spriteRef, out spriteAsset))
        {
            return(this.InstantiateWidget(canvas, spriteAsset, widgetType));
        }
        return(null);
    }
Beispiel #2
0
    private GameObject InstantiateWidget(Canvas canvas, SVGSpriteAssetFile spriteAsset, SVGUIWidgetType widgetType)
    {
        Image         uiImage;
        InputField    inputField = null;
        SVGSpriteRef  spriteRef  = spriteAsset.SpriteRef;
        SVGSpriteData spriteData = spriteAsset.SpriteData;
        GameObject    gameObj    = new GameObject();

        gameObj.layer = LayerMask.NameToLayer("UI");
        // add Image component; NB: it will add a RectTransform component too
        uiImage            = gameObj.AddComponent <Image>();
        uiImage.fillCenter = true;
        uiImage.material   = null;
        uiImage.color      = new Color(1.0f, 1.0f, 1.0f, 1.0f);
        uiImage.sprite     = spriteData.Sprite;

        switch (widgetType)
        {
        case SVGUIWidgetType.Button:
            gameObj.AddComponent <Button>();
            break;

        case SVGUIWidgetType.InputField:
            inputField = gameObj.AddComponent <InputField>();
            break;

        default:
            break;
        }

        // get RectTransform component and set size according to the associated sprite
        RectTransform rectTransform = gameObj.GetComponent <RectTransform>();

        rectTransform.SetParent(canvas.transform);

        // attach SVGUISpriteLoaderBehaviour component
        SVGUISpriteLoaderBehaviour spriteLoader = (SVGUISpriteLoaderBehaviour)gameObj.AddComponent <SVGUISpriteLoaderBehaviour>();

        spriteLoader.UIAtlas         = this;
        spriteLoader.SpriteReference = spriteRef;
        spriteLoader.ResizeOnStart   = true;

        // anchor presets
        if (widgetType == SVGUIWidgetType.Panel)
        {
            rectTransform.anchorMin     = Vector2.zero;
            rectTransform.anchorMax     = Vector2.one;
            rectTransform.localPosition = Vector3.zero;
            rectTransform.sizeDelta     = Vector2.zero;
        }
        else
        {
            rectTransform.anchorMin = new Vector2(0.5f, 0.5f);
            rectTransform.anchorMax = new Vector2(0.5f, 0.5f);
            rectTransform.sizeDelta = new Vector2(spriteData.Sprite.rect.width, spriteData.Sprite.rect.height);
        }

        // set image type
        uiImage.type = (spriteData.Sprite.border != Vector4.zero) ? Image.Type.Sliced : Image.Type.Simple;

        if (widgetType == SVGUIWidgetType.InputField)
        {
            this.PopulateInputField(canvas, gameObj, inputField);
        }

        gameObj.name = spriteData.Sprite.name;
        gameObj.SetActive(true);
        return(gameObj);
    }