/// <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; } }
/// <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; } }
public virtual void SetImageSprite(Sprite sprite) { m_AspectRatioFitterComponent.aspectMode = AspectRatioFitter.AspectMode.None; ImageComponent.sprite = null; if (sprite != null) { ImageComponent.sprite = sprite; ImageComponent.preserveAspect = true; ImageComponent.SetNativeSize(); CalculateAspectRatio(); } else { m_AspectRatioFitterComponent.aspectRatio = 1; } }