using asap.core; using UnityEngine; using UnityEngine.UI; public class UIImage : Image { ShowImageData imageData; IUIService uiService; public void Sprite(string spriteName) { if (imageData == null) { imageData = new ShowImageData(this); } if (uiService == null) { uiService = GContext.container.Resolve(); } if (uiService != null) { imageData.SetName(spriteName); uiService.SetImageSprite(imageData); } else { Debug.LogError("IUIService is not resolved."); } } } public class ShowImageData : IShowImageData { public string spriteName { set; get; } public Image image { set; get; } string otherName; /// /// image 赋值必须新new一个对象,防止sprite 给的一个错误的对象 /// /// public ShowImageData(Image image) { this.image = image; } public ShowImageData(Image image, string spriteName) { this.image = image; SetName(spriteName); } public void SetName(string spriteName) { this.spriteName = spriteName; otherName = spriteName + "(Clone)"; } public void SetImage(Sprite sprite) { if (image != null && (sprite.name == otherName || sprite.name == spriteName)) { image.sprite = sprite; } } }