记录Dotween中Sequence频繁创建和关闭时出现的问题

这篇具有很好参考价值的文章主要介绍了记录Dotween中Sequence频繁创建和关闭时出现的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

问题出现在Unity的Button点击事件中,对同一个Sequence引用,频繁使用OnPointerDown和OnPointerUp事件来控制其创建和Kill() 时,会因处理速度问题导致出现其中某次的Sequence没有被正确关闭:

首先全局声明一个 sequence 引用:

Sequence sequence = DOTween.Sequence();

然后在两个连续快速触发的函数中分别创建,Kill该sequence:

    // 鼠标按下时,用引用sequence创建一个新的序列
    public override void OnPointerDown(PointerEventData eventData)
    {
        sequence = DOTween.Sequence();
        // infinite循环执行调用一个函数 MassiveFunctionA
        sequence.AppendCallback(MassiveFunctionA).SetDelay(0.1).SetLoops(-1);
    }

    // 鼠标抬起时,将当前的sequence引用下的序列kill掉; 但在此之前执行了一段很重的
    // 代码 MassiveFunctionB
    public override void OnPointerUp(PointerEventData eventData)
    {
        MassiveFunctionB()
        sequence.Kill();
        sequence = null;
    }

按设计上的思路,上述代码会在按下时循环执行MassiveFunctionA,在抬起时中止循环,再次按下时再循环执行MassiveFunctionA,再抬起再中止循环;

问题分析:

然而实际情况时当极快速的连续点击(down-up-down)时, 当第二次down执行到 sequence = DOTween.Sequence()时, OnPointerUp中的MassiveFunctionB()仍未处理完,故在sequence.Kill()未被执行时,就执行了一遍第二次down中的 DOTween.Sequence(),此时如果OnPointerUp继续执行下去会关闭第二次down时生成的 sequence(猜想是第一次down时生成的sequence因为引用丢失可能已经无法关闭了,该循环会在后台一直执行)

解决方案:

解决方案如下,需要保证内存中只有一份叫做sequence的动画序列在执行,所以每次生成新序列之前需要把该引用sequence下的实际内存关闭掉:文章来源地址https://www.toymoban.com/news/detail-515167.html

    // 解决方案:在生成新sequence前执行一遍 Kill 和 null 操作, 防止OnPointerUp没有正确关闭仍在运行中的sequence
    public override void OnPointerDown(PointerEventData eventData)
    {
        if (sequnce != null) 
        {
            sequence.Kill();
            sequence = null;
        }
        sequence = DOTween.Sequence();
        // infinite循环执行调用一个函数 MassiveFunctionA
        sequence.AppendCallback(MassiveFunctionA).SetDelay(0.1).SetLoops(-1);
    }

    public override void OnPointerUp(PointerEventData eventData)
    {
        MassiveFunctionB()
        if (sequnce != null) 
        {
            sequence.Kill();
            sequence = null;
        }
    }

到了这里,关于记录Dotween中Sequence频繁创建和关闭时出现的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决:django设置DEBUG=false时出现的问题

    首先,我用的是django4.2,python3.10版本 本来,如果在settings.py中使用 DEBUG = True,那么什么问题也没有,当然,这属于调试模式。 一切正常..... 但是,当我准备提交代码时,将 DEBUG 改为 False 时..... 好好的admin界面,变成了这样.... 而且,好好的静态资源,也没法访问了:  郁闷

    2024年02月13日
    浏览(40)
  • 解决Python安装库时出现的Requirement already satisfied问题

    uirement already satisfied 的问题当我们用 pip install + 库名 时,出现了下面 Requirement already satisfied WARNING: Ignoring invalid distribution -ip  的问题 对于这样的问题,解决办法就是在 pip install 后加 - -target=你所要添加的库文件地址(注意:target前为两个-,并且没有空格) 再加 库名 一般来说

    2024年01月19日
    浏览(40)
  • Python学习:使用selenium爬取某个网站时出现的问题

    最近,学习Python爬虫兴奋之时,突发奇想想去爬取网易云音乐的评论,根据所学,先找到评论定位的CSS选择器,然后什么也没有输出,又仔细检查了一下没有任何问题,后来一遍一遍查询资料发现,原来网页中有frame或者iframe时,需要在定位器的前面加这么一句: 这样再接着

    2024年02月16日
    浏览(35)
  • 解决OBS同时录制电脑音频和人声时出现的声音不同步问题

    在obs同时录制电脑声音和人声时,比如在 唱歌 、 配音 时,录制的结果人声有明显的延迟,大约0.5-1秒左右的样子 麦克风 - 高级音频属性 调整麦克风的同步偏移,通常是人声有延迟,用负数表示提前多少毫秒,需要多次尝试确定真正的延迟时间 注: 这是目前唯一的一个人声

    2024年02月12日
    浏览(49)
  • 解决安装nrm,执行nrm ls时出现的const open=require(‘open’)问题

     最开始安装的淘宝镜像源为 npm config set registry=https ://registry.npm.taobao.org/ ,后来看到镜像源变了,就换了下面的, 下载新的npm淘宝镜像资源包 npm config set registry http://registry.npmmirror.com 查看,安装成功:  安装nrm插件: npm install -g nrm ,将nrm安装为全局可用的工具。 然后运行

    2024年02月06日
    浏览(51)
  • GUN GRUB version2.06如何处理 | 双系统重装Ubuntu时出现的问题

    首先描述一下我的问题,本机装了win和ubuntu双系统,在解决工程问题时发现环境配置总是失败,于是下定决心重装系统。按照之前的操作用DiskGenuis把Ubuntu所属的盘直接格式化。重启后发现直接进入了GUN GRUB version2.06界面。 重启电脑(直接电源键,或者grub界面输入exit) 重启的

    2024年02月11日
    浏览(38)
  • npm install时出现的问题Failed at the node-sass@4.14.1 postinstall script

    从阿里云上拉取下来项目后,首先使用npm install 命令进行安装所需依赖,意想不到的事情发生了,报出了Failed at the node-sass@4.14.1 postinstall script,这个问题,顿时一脸懵逼;询问前端大佬,给出的反馈是,“没法解决”,这时我有点不知所措了,大佬都说没法解决了。  但是我

    2024年02月14日
    浏览(57)
  • 解决微信小程序recycle-view使用百分比单位控制宽高时出现的内容溢出问题

    recycle-view是微信小程序官方推出的一个经过优化的长列表组件,但是在使用百分比单位控制高宽时有个内容溢出问题,虽然它提供了height和width的参数可以设置宽高,但每次写列表都需要去js里获取宽高并设置是较为麻烦的,所以现在来着手解决使用百分比单位设置宽度时碰到

    2024年02月03日
    浏览(46)
  • Unity 使用 Dotween 的 Sequence 制作UI动画并且可重复利用

    目录 前言 一、DOTween是什么? 二、使用步骤 1.导入DOTween 2.配置DOTween 3.使用代码编写动画 4.代码API解释 总结 DOTween可以制作简易的UI动画,避免创建大量的Animator,本篇文章介绍一下我制作UI动画时的一些技巧 效果展示   DOTween是UnityAssetStore中一个免费的插件,用于创建简单的

    2024年02月08日
    浏览(51)
  • 解决npm install 时出现的.git can‘t be found (see https://git.io/Jc3F9)问题

    问题: 今天使用webstream npm instatll 之后报错 .git can‘t be found (see https://git.io/Jc3F9) 原因 一般来说就是你使用ws打开的文件夹位置中不是 .git 文件夹的所在的文件夹相同的位置 举个例子就是: 你的 .git 文件在路径 /a/b 而你现在用ws打开的项目在 /a/b/c 中导致的, 解决方案, 建议不要

    2024年04月25日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包