制作一个统一游戏看起来好像已经崩溃C#

时间:2017-11-15 02:24:01

标签: c# winapi unity3d windows-10 metaprogramming

我想让我的Unity游戏看起来已经崩溃(无响应的应用程序崩溃,而不是代码异常崩溃)。

您可以调用Windows API中的某些功能来模拟它。

我还看过一款名为" Pony Island"之前这样做,所以它当然是可能的。但是,我没有副本,也不能反编译蒸汽游戏。

如果有办法实际挂起程序,同时仍然可以随时将其恢复,那么解决方案更可取,这似乎不太可能。

要清楚,我希望它看起来合法,所以我更喜欢使用windows API来改变窗口颜色并生成弹出窗口,而不是将它们统一为GUI对象或类似的东西。我也不太关心交叉兼容性,因为Mac API似乎难以实现,甚至更难测试(在Windows机器上),并且很可能不会与尽可能多的hacky功能兼容正如Windows API一样。

2 个答案:

答案 0 :(得分:-1)

安全地执行此操作的最佳方法是运行一些脚本设置time.timeScale = 0 - 有效地“冻结”游戏,同时播放窗口“错误”声音效果。

(注意:您可能还必须暂停此脚本中的音频源和粒子发射器,我还没有使用时间刻度,因为我不确定它是否会影响这些)

我知道你建议不要使用UGUI但是在整个屏幕上没有放置源的图像,它的颜色和alpha调整也可以非常容易地模拟“冻结屏幕”。

您还可以查看强制“恢复”/更改窗口全屏模式的方法(如果以全屏模式播放)

答案 1 :(得分:-2)

我会尝试使用Thread.Sleep(int)来实现这一点 所以在主线程中,我会调用它来冻结整个统一循环一段时间,例如5秒= 5000毫秒

并检查是否要继续崩溃。例如,但没有经过测试,(我的办公室环境没有统一性)

小心这一点,因为这会将它冻结为真实的,你仍然可以在冻结时进行任何操作。

public class Crasher : MonoBehaviour
{
    public bool isCrash = false;
    //The crash in seconds
    public float crashDuration = 5;

    void Update ()
    {
        if (isCrash)
        {
            //Freeze the applicaion for amount of milliSeconds
            System.Threading.Thread.Sleep(crashDuration * 1000);
        }
    }
}