GameFramework 中 图片 加载

代码来自烟雨迷离半世殇Unity作品展示:坦克大战(基于GameFramework)_设计师养成记-CSDN博客游戏名称:Battle City游戏素材:SIKI学院,爱给网开发平台:Unity 2018.3.1f1游戏平台:WinX游戏版本:1.0游戏用途:仅供学习交流使用,若用作商业,后果自负。游戏类型:经典坦克大战,微创新游戏介绍:加入商城模块,任务模块,存读档功能,技能背包系统,Buff系统源码下载:https://blog.csdn.net/qq_1502054...https://blog.csdn.net/qq_15020543/article/details/86760793

非常棒!推荐大家去看

游戏过程中需要加载的图片全部为SpritesAsset继承ScriptableObject。

namespace GameMain.Scripts.CostumAssets
{
    [Serializable]
    public class SpriteItem
    {
        /// <summary>
        /// 精灵名称
        /// </summary>
        public string m_SpriteName;

        /// <summary>
        /// 精灵
        /// </summary>
        public Sprite Sprite;
    }
}
namespace GameMain.Scripts.CostumAssets
{
    public class SpritesAsset : ScriptableObject
    {
        /// <summary>
        /// 精灵数组
        /// </summary>
        [SerializeField] public List<SpriteItem> m_SpritesAssets = new List<SpriteItem>();
    }
}

游戏开始后如何加载资源?

GameEntry.Resource.LoadAsset(AssetUtility.GetSpriteAsset(), OnLoadSpriteAssetSuccess);

其中,AssetUtility.GetSpriteAsset()位于工具类中,获得asset

建立工具类,方便资源的加载

namespace GameMain.Scripts.Utility
{
    public static class AssetUtility
    {

        public static string GetDataTableAsset(string assetName, LoadType loadType)
        {
            return GameFramework.Utility.Text.Format("Assets/GameMain/DataTables/{0}.{1}", assetName,
                loadType == LoadType.Text ? "txt" : "bytes");
        }

        public static string GetSceneAsset(string assetName)
        {
            return GameFramework.Utility.Text.Format("Assets/GameMain/Scenes/{0}.unity", assetName);
        }

        public static string GetSoundAsset(string assetName)
        {
            return GameFramework.Utility.Text.Format("Assets/GameMain/Sounds/{0}.wav", assetName);
        }

        public static string GetEntityAsset(string assetName)
        {
            return GameFramework.Utility.Text.Format("Assets/GameMain/Entities/{0}.prefab", assetName);
        }

        public static string GetUIFormAsset(string assetName)
        {
            return GameFramework.Utility.Text.Format("Assets/GameMain/UI/UIForms/{0}.prefab", assetName);
        }

        public static string GetSpriteAsset()
        {
            return "Assets/GameMain/CostumAssets/SpritesAsset.asset";
        }
    }
}
        public LoadAssetCallbacks
            OnLoadSpriteAssetSuccess = new LoadAssetCallbacks(loadSpritsAssetCallback);

OnLoadSpriteAssetSuccess则是一个回调,在加载成功后回调,回调内容为:

        private static void loadSpritsAssetCallback(string assetname, object asset, float duration, object userdata)
        {
            m_SpritesAsset = asset as SpritesAsset;
        }

SpritesAsset 类型的参数记录了这个回调返回的结果

 public static SpritesAsset m_SpritesAsset { get; set; }

最后是资源在游戏中的使用:

transform.GetComponent<SpriteRenderer>().sprite = GameManager.m_SpritesAsset.m_SpritesAssets[6].Sprite;

根据之前定义的结构进行读取即可!非常方便

    public class SpriteItem
    {
        /// <summary>
        /// 精灵名称
        /// </summary>
        public string m_SpriteName;

        /// <summary>
        /// 精灵
        /// </summary>
        public Sprite Sprite;
    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值