SRPG游戏开发(十三)第五章 颜色映射与职业动画 - 五 修正颜色转换器(Fix Color Swapper)


返回目录

第五章 颜色映射与职业动画


五        修正颜色转换器(Fix ColorSwapper)


1        修正颜色转换器


我们已经知道是由于Animator每次执行动画时都会重置SpriteRenderer的参数所导致的,所以只要在它重置完参数后,重新用我们的MaterialPropertyBlock覆盖就好了。


在这里我们使用UnityCallback中的LateUpdate。在Update之后运行,也同时在Animator之后运行。


打开ColorSwapper.cs,并添加LateUpdate


        private void LateUpdate()
        {
            if (renderer != null && renderer.sprite != null && m_SwapMaterialBlock != null)
            {
                // 如果有SpriteRenderer的动画,必须每帧调用才有效
                renderer.SetPropertyBlock(m_SwapMaterialBlock);
            }
        }

删除Start方法中的renderer.SetPropertyBlock(m_SwapMaterialBlock)


        private void Start()
        {
            if (!string.IsNullOrEmpty(m_StartChart))
            {
                SwapColors(m_StartChart);
            }
        }

再添加OnDestroy方法:


        private void OnDestroy()
        {
            if (m_MainTexture != null)
            {
                m_MainTexture = null;
            }

            if (m_SwapMaterialBlock != null)
            {
                m_SwapMaterialBlock = null;
            }
        }


2        再次测试颜色映射


再次点击“Play”按钮启动游戏,颜色成功映射。


5 - 11再次测试


就算加上动画,也完全没有问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值