首页 > 其他 > 详细

如何提取重复的 button 事件方法

时间:2020-07-13 23:10:08      阅读:57      评论:0      收藏:0      [点我收藏+]

Unity 中的事件一般都是回调 UnityAction 或者 UnityAction 的,下面示例代码中的几个事件都调用了 commandPanel.Walk(Direction direction) 方法,仅参数不同,可以抽取函数 UnityAction Walk(Direction direction) 来封装这些相同的代码。

重构前

void Awake()
{
    // ...
    walkUpButton.onClick.AddListener(() => {
        commandPanel.Walk(Direction.Up);
        // some other repeated actions
    });
    walkRightButton.onClick.AddListener(() => {
        commandPanel.Walk(Direction.Right);
        // some other repeated actions
    });
    walkDownButton.onClick.AddListener(() => {
        commandPanel.Walk(Direction.Down);
        // some other repeated actions
    });
    walkLeftButton.onClick.AddListener(() => {
        commandPanel.Walk(Direction.Left);
        // some other repeated actions
    });
    // ...
}

重构后

void Awake()
{
    // ...
    walkUpButton.onClick.AddListener(Walk(Direction.Up));
    walkRightButton.onClick.AddListener(Walk(Direction.Right));
    walkDownButton.onClick.AddListener(Walk(Direction.Down));
    walkLeftButton.onClick.AddListener(Walk(Direction.Left));
    // ...
}

UnityAction Walk(Direction direction)
{
    return () =>
    {
        commandPanel.Walk(direction);
        // some other repeated actions
    };
}

如何提取重复的 button 事件方法

原文:https://www.cnblogs.com/forhot2000/p/13296287.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!