public void SetModel <T>(T model) where T : ButtonModel { m_modelBase = model; m_modelBase.OnAppearingBegan += () => { PlayAnimation(AppearAnimationName, () => { m_modelBase.FinishAppearingAnimation(); }); }; m_modelBase.OnAppeared += () => { PlayAnimation(DefaultAnimationName); }; m_modelBase.OnDisappearingBegan += () => { PlayAnimation(DisappearAnimationName, () => { m_modelBase.FinishDisappearingAnimation(); }); }; m_modelBase.OnUpdated += () => { }; }