示例#1
0
        /// <summary>
        /// Called whenever properties affecting the image are changed.
        /// </summary>
        public virtual void ImageChanged()
        {
            if (IgnoreObject)
            {
                return;
            }

            if (ImageComponent == null)
            {
                // add image component if background color is defined
                if (BackgroundColorProperty.IsUndefined(this, true))
                {
                    return;
                }

                ImageComponent = GameObject.AddComponent <UnityEngine.UI.Image>();
            }

            if (BackgroundColorProperty.IsUndefined(this))
            {
                if (ImageComponent.sprite != null || ImageComponent.overrideSprite != null)
                {
                    // use white color by default if image is set
                    ImageComponent.color = Color.white;
                }
                else
                {
                    // use clear color by default if image isn't set
                    ImageComponent.color = Color.clear;
                }
            }

            var sprite = ImageComponent.overrideSprite ?? ImageComponent.sprite;

            if (Width == null && Height == null)
            {
                // if width and height is undefined, adjust size to native size of sprite
                if (sprite != null)
                {
                    ImageComponent.SetNativeSize();
                    OverrideWidth  = ElementSize.FromPixels(ImageComponent.rectTransform.sizeDelta.x);
                    OverrideHeight = ElementSize.FromPixels(ImageComponent.rectTransform.sizeDelta.y);
                }
            }

            bool isLoading = BackgroundSprite != null && !BackgroundSprite.IsLoaded;

            if (isLoading && sprite == null)
            {
                // always disable image while loading if current sprite isn't set
                ImageComponent.enabled = false;
            }
            else
            {
                // disable raycast blocks if image is transparent
                ImageComponent.enabled = RaycastBlockMode == RaycastBlockMode.Always ? true : ImageComponent.color.a > 0;
            }
        }
示例#2
0
        /// <summary>
        /// Called whenever properties affecting the image are changed.
        /// </summary>
        public virtual void ImageChanged()
        {
            if (ImageComponent == null)
            {
                return;
            }

            if (ColorProperty.IsUndefined(this))
            {
                if (ImageComponent.sprite != null || ImageComponent.overrideSprite != null)
                {
                    // use white color by default if image is set
                    ImageComponent.color = Color.white;
                }
                else
                {
                    // use clear color by default if image isn't set
                    ImageComponent.color = Color.clear;
                }
            }

            var sprite = ImageComponent.overrideSprite ?? ImageComponent.sprite;

            if (WidthProperty.IsUndefined(this) && HeightProperty.IsUndefined(this))
            {
                // if width and height is undefined, adjust size to native size of sprite
                if (sprite != null)
                {
                    ImageComponent.SetNativeSize();
                    OverrideWidth  = ElementSize.FromPixels(ImageComponent.rectTransform.sizeDelta.x);
                    OverrideHeight = ElementSize.FromPixels(ImageComponent.rectTransform.sizeDelta.y);
                    if (OverrideHeight.Pixels != 0)
                    {
                        _nativeAspectRatio = OverrideWidth.Pixels / OverrideHeight.Pixels;
                    }
                }
            }
            else
            {
                _nativeAspectRatio = -1;
            }

            bool isLoading = Sprite != null && !Sprite.IsLoaded;

            if (isLoading && sprite == null)
            {
                // always disable image while loading
                ImageComponent.enabled = false;
            }
            else
            {
                // disable raycast blocks if image is transparent
                ImageComponent.enabled = RaycastBlockMode == RaycastBlockMode.Always ? true : ImageComponent.color.a > 0;
            }
        }
示例#3
0
        /// <summary>
        /// Called whenever properties affecting the image are changed.
        /// </summary>
        public virtual void ImageChanged()
        {
            if (RawImageComponent == null)
            {
                return;
            }

            if (ColorProperty.IsUndefined(this))
            {
                if (RawImageComponent.texture != null)
                {
                    // use white color by default if image is set
                    RawImageComponent.color = Color.white;
                }
                else
                {
                    // use clear color by default if image isn't set
                    RawImageComponent.color = Color.clear;
                }
            }

            var texture = RawImageComponent.texture;

            if (WidthProperty.IsUndefined(this) && HeightProperty.IsUndefined(this))
            {
                // if width and height is undefined, adjust size to native size of sprite
                if (texture != null)
                {
                    RawImageComponent.SetNativeSize();
                    OverrideWidth  = ElementSize.FromPixels(RawImageComponent.rectTransform.sizeDelta.x);
                    OverrideHeight = ElementSize.FromPixels(RawImageComponent.rectTransform.sizeDelta.y);
                }
            }

            bool isLoading = Texture != null && !Texture.IsLoaded;

            if (isLoading && texture == null)
            {
                // always disable image while loading
                RawImageComponent.enabled = false;
            }
            else
            {
                // disable raycast blocks if image is transparent
                RawImageComponent.enabled = RaycastBlockMode == RaycastBlockMode.Always ? true : RawImageComponent.color.a > 0;
            }
        }