Esempio n. 1
0
    /// <summary>
    /// 添加一个帧动画在GameObject下;
    /// </summary>
    /// <param name="name">动画名</param>
    /// <param name="parent"></param>
    /// <param name="fps">frames per second</param>
    /// <param name="isLoop"></param>
    public UISpriteAnimation AddSpriteAnimation(string name, GameObject parent, int depth = 0, int fps = 30, bool isLoop = true, bool selfDestroy = false)
    {
        if (string.IsNullOrEmpty(name))
        {
            return(null);
        }

        if (parent == null)
        {
            return(null);
        }

        GameObject go = System.Activator.CreateInstance <GameObject>() as GameObject;

        go.SetActive(false);
        go.transform.parent        = parent.transform;
        go.name                    = name;
        go.transform.localPosition = Vector3.zero;
        go.transform.localScale    = Vector3.one;


        UISprite gold = go.AddMissingComponent <UISprite>();

        //gold.atlas = UIAtlasHelper.LoadAtlas("SpriteAnimation/" + name);
        gold.spriteName = "";
        gold.depth      = depth;
        gold.MakePixelPerfect();
        gold.width  = 1;
        gold.height = 1;

        SpriteAniParam param = new SpriteAniParam();

        param.fps           = fps;
        param.isLoop        = isLoop;
        param.isSelfDestroy = selfDestroy;
        param.obj           = go;

        UISpriteAnimation spriteAni = go.AddMissingComponent <UISpriteAnimation>();


        if (!mAniDatas.ContainsKey(name))
        {
            mAniDatas.Add(name, new List <SpriteAniParam>());
            mAniDatas[name].Add(param);

            UIResourceManager.Instance.LoadAnimationRes(name, OnAnimationResLoaded);
        }
        else
        {
            mAniDatas[name].Add(param);
        }

        return(spriteAni);
    }
Esempio n. 2
0
    private void OnAnimationResLoaded(string aniName)
    {
        if (!mAniDatas.ContainsKey(aniName))
        {
            return;
        }
        List <SpriteAniParam> lst = mAniDatas[aniName];

        for (int i = 0; i < lst.Count; ++i)
        {
            SpriteAniParam param = lst[i];

            GameObject go = param.obj;

            UISprite gold = go.GetComponent <UISprite>();
            gold.atlas = UIAtlasHelper.LoadAtlas(aniName);
            gold.MakePixelPerfect();

            UISpriteAnimation spriteAni = go.GetComponent <UISpriteAnimation>();
            if (spriteAni == null)
            {
                GameDebug.LogError("怎么可能出错了");
                return;
            }

            spriteAni.framesPerSecond = param.fps;
            spriteAni.loop            = param.isLoop;
            if (param.isSelfDestroy)
            {
                spriteAni.onFinished += DestroyObj;
            }

            spriteAni.RebuildSpriteList();
            spriteAni.Reset();
            go.SetActive(true);
        }

        mAniDatas.Remove(aniName);
    }