天天看點

SRPG遊戲開發(十三)第五章 顔色映射與職業動畫 - 五 修正顔色轉換器(Fix Color Swapper)第五章 顔色映射與職業動畫

傳回目錄

第五章 顔色映射與職業動畫

五        修正顔色轉換器(Fix ColorSwapper)

1        修正顔色轉換器

我們已經知道是由于Animator每次執行動畫時都會重置SpriteRenderer的參數所導緻的,是以隻要在它重置完參數後,重新用我們的MaterialPropertyBlock覆寫就好了。

在這裡我們使用Unity的Callback中的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”按鈕啟動遊戲,顔色成功映射。
SRPG遊戲開發(十三)第五章 顔色映射與職業動畫 - 五 修正顔色轉換器(Fix Color Swapper)第五章 顔色映射與職業動畫
圖 5 - 11再次測試
就算加上動畫,也完全沒有問題。

繼續閱讀