1. 程式人生 > 實用技巧 >從FGUI中取一張圖片並返回一個Sprite

從FGUI中取一張圖片並返回一個Sprite

從Fgui中的圖集中取一個圖素,把圖素用到場景等非UI的地方。

此操作會動態建立一個Sprite物件,效率不好,不適合大量使用。

 private static Dictionary<string, Sprite> cacheSpriteByFGUIDic = new Dictionary<string, Sprite>();
/// <summary>
    /// 從FGUI中取一張圖片並返回一個Sprite(不建議頻繁使用)
    /// </summary>
    /// <param name="packageName"></param>
/// <param name="texName"></param> public static Sprite GetSpriteByFGUI(string packageName, string texName) { if (cacheSpriteByFGUIDic.ContainsKey(texName)) return cacheSpriteByFGUIDic[texName]; else { FairyGUI.GImage gImage = FairyGUI.UIPackage.CreateObject(packageName, texName).asImage; Rect rect
= new Rect(gImage.texture.uvRect.x * gImage.texture.nativeTexture.width, gImage.texture.uvRect.y * gImage.texture.nativeTexture.height, gImage.texture.uvRect.width * gImage.texture.nativeTexture.width, gImage.texture.uvRect.height * gImage.texture.nativeTexture.height); Sprite sprite
= Sprite.Create((Texture2D)gImage.texture.nativeTexture, rect, new Vector2(0.5f, 0.5f), 100); gImage.Dispose(); cacheSpriteByFGUIDic.Add(texName, sprite); return sprite; } }