如何禁用所有 Unity 动画?

Buc*_*cic 45 unity animations

如果不可能,那么也许只是 Dash 显示/隐藏动画。我只是发现自己在等待毫无意义的动画。

ish*_*ish 26

在此处输入图片说明

1. 为什么你不能在 Unity 12.04 中禁用这个 Dash 动画

  • 不幸的是,淡入淡出/不透明度动画和相关时间在 Unity 源代码中是硬编码的。
  • 实际代码可以在unity-5.12/plugins/unityshell/src/ShortcutController.cpp(这是您必须修改和重新编译以摆脱动画的内容)
  • 当您使用 Super 键启动 Dash 时,此文件中的一些示例行演示了动画的硬编码:

    30:const unsigned int SUPER_TAP_DURATION = 650;
    31:const unsigned int FADE_DURATION = 100;
    39:,fade_in_animator_(FADE_DURATION)
    40:,fade_out_animator_(FADE_DURATION)
    65:fade_in_animator_.animation_updated.connect(sigc::mem_fun(this, &Controller::OnFadeInUpdated));
    66:fade_in_animator_.animation_ended.connect(sigc::mem_fun(this, &Controller::OnFadeInEnded));
    67:fade_out_animator_.animation_updated.connect(sigc::mem_fun(this, &Controller::OnFadeOutUpdated));
    68:fade_out_animator_.animation_ended.connect(sigc::mem_fun(this, &Controller::OnFadeOutEnded));
    120: show_timer_ = g_timeout_add(SUPER_TAP_DURATION, &Controller::OnShowTimer, this);
    149: self->fade_out_animator_.Stop();
    150: self->fade_in_animator_.Start(self->view_window_->GetOpacity());
    213:fade_in_animator_.Stop();
    214:fade_out_animator_.Start(1.0 - view_window_->GetOpacity());
    244:.add(“超时时间”,SUPER_TAP_DURATION + FADE_DURATION)
    246: .add("about_to_show", (Visible() && !fade_out_animator_.IsRunning() && view_window_ && view_window_->GetOpacity() != 1.0f))
    247: .add("about_to_hide", (Visible() && !fade_in_animator_.IsRunning() && view_window_ && view_window_->GetOpacity() != 1.0f))
    
  • 当然,您必须修补它并在每次新的 Unity 更新时重建...

  • 对 Compiz 的任何干预都无法改变这一点,因为所有这些都是在 Compiz 插件之外进行硬编码的。

2. 备选方案 A:切换到 Ubuntu 2D

Ubuntu 2D 有不同的 Unity Shell 代码,在那里,通过 Super 启动破折号是即时的,并且不会为任何东西设置动画。

3. 备选方案 B:使用自定义快捷方式通过单击 Ubuntu 徽标来启动 Dash,从而绕过动画

我们可以利用这样一个事实,即当您通过“开始”按钮启动 Dash 时,或者如果您的光标位于启动栏上/周围,即使您按下 Super,也不会发生不透明度/淡入淡出动画:

在此处输入图片说明

动画将被延迟,直到您的光标实际移动到虚线区域内。

  1. xdotool允许键盘和鼠标点击/移动的自动化;安装它sudo apt-get install xdotool
  2. 打开设置...键盘,然后转到快捷方式选项卡。创建一个自定义快捷方式,随意命名,并将“命令”设置为:

    xdotool mousemove --sync 25 60 click 1 --delay 100  mousemove restore
    
    Run Code Online (Sandbox Code Playgroud)

    在此处输入图片说明

    • 如果您的屏幕分辨率低于 1024x768 左右,您可能需要稍微调整坐标 (25 60)。
  3. 单击应用。右栏会显示“禁用”,点击它,你会看到“新加速器”:按下你的快捷键组合。你不能选择 Super,即使你在 Compiz 中禁用它,因为它被 Unity 硬捕获。我选择Ctrl+Alt+Z它是因为它靠近 Super 键。

  4. 现在,您的快捷方式应该可以更快地启动 Dash。

    • 这是一个 Youtube 视频演示。前几次(当左侧的启动器模糊和变暗时)是使用 SUPER 键;然后它使用自定义 xdotool 快捷方式(注意启动器不再动画并且破折号出现更快)

  • 谢谢!赏金是你的!+1 为安瓦尔沙阿。我特别喜欢替代方案 B :) 至于摆弄代码 - 我想我会等着看它在 12.10 中将如何处理。如果相同,那么 Unity 团队显然有一些 **白痴** 议程,这使得他们将可访问性功能作为 Unity 中的默认设置。这是我能想到的唯一解释。无论哪种方式 - 愚蠢的。 (2认同)

Áng*_*aya 23

安装 Compiz 配置管理器。

Ubuntu 软件中心:Compiz 配置管理器

或者

终端: sudo apt-get install compizconfig-settings-manager

安装后打开它并进入Ubuntu Unity Plugin-> Experimental(Tab)

从那里你可以设置Lauch Animation,Urgent AnimationDash Blur`None。

将 设置Hide AnimationSlide only

如果需要,您可以将面板和虚线透明度更改为完全不透明。

  • 您只需取消单击 ccsm 中的“显示动画”复选框。我已经这样做了多年,因为我讨厌令人震惊的动画。 (2认同)

Anw*_*war 6

对不起,你不能。此时(2012 年 7 月 25 日)使用 Ubuntu 12.04 LTS,没有简单的方法可以禁用 Unity 动画。(至少没有重新编译)。

而且我不认为,在未来的版本中会有禁用动画的选项。因为,Unity 的目标之一是提供令人愉悦的用户体验,而动画被认为是实现这一目标的最佳方式之一。

解决方法:

您可能的解决方法是将破折号动画更改为淡入淡出(因为在我看来,淡入淡出比滑动快)。您可能还对禁用所有窗口的动画感兴趣。去做这个,

  1. 下载并安装 compizconfig-settings-manager

     sudo apt-get install compizconfig-settings-manager  
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过搜索或在破折号中键入ccsm来打开它。转到Unity 插件实验选项卡并将Hide animations的设置更改为Fade only

如果要禁用所有窗口中的动画,可以禁用ccsm 中的Animations插件。如果要禁用 Fading,请禁用Fading windows插件。

希望这会有所帮助。


编辑:正如 izx 在他编辑的答案中显示的那样,您清楚地看到,破折号动画的选项在 Unity 中是硬编码的,并且不能使用任何配置选项更改,因为这些持续时间不是可变的,可以更改。因此,这意味着,您必须通过将这些持续时间更改为 0 毫秒来完全禁用动画来重新编译 unity。