在unity中如何实现记录输入流?

0 条评论 收藏

!

举报

向奶牛关官方反馈,以净化良好的社区环境

不感兴趣


  • 1

    Yene杂食看戏

    Yould 赞同

    举例的游戏并不需要记录输入流,只需要记录每一帧的位置就可以。

    int initFrame = 0

    Vector3[] step = new Vector3[108000]

    Init:

    Shadow.Create(Frame.Now)

    Update:

    if (shadow.idle)

        shadow.Update(step[Frame.Now - shadow.initFrame])


    记录输入流有一定作用,因为一般游戏决定进程的只有输入和随机数,全部记录就可以复原。

    其他的扩展也是一样,只是注意代码实现尽量做到可以插值的。

    自循环比如Animation.Play,AudioSource.Play一类的方法回溯就比较麻烦。

    改为AnimationClip.Sample,AudioClip.Sample之后就方便控制。


    但想要时之沙和时空幻境一样倒播的效果一般用不到,因为大多数输入都是一方通行的。

    发布于 2017-04-18 20:27:10 0 条评论 禁止转载 收藏
    !

    举报

    向奶牛关官方反馈,以净化良好的社区环境

    不感兴趣


  • 1

    张公子 Wayne要啥签名啊?又没有个性

    Yould 赞同

    纯属个人乱解。

    第一想到的就是设计模式里的 undo/redo 模式,如果没看错这个游戏和时空幻境的影子那个世界很像,因为游戏不大,其实完全可以把每一帧的操作都记录到内存里,然后再 redo , redo 的时候给影子的运动规则加入一些不一样的功能即可。


    至于在unity上实现的具体问题多问度娘,我能给出的就是这么个思路,因为我设计模式课最后的项目就是用undo/redo模式做了个关于时间倒流的弹幕游戏。


    ps:为什么我觉得是一帧帧保存在内存里的呢,因为时空幻境里关于影子的那个地方就是作者只允许一段时间的影子行动,而且每个关卡也像你提到的那个游戏不是很大(所以为了防止内存不够用才限定时间,但是就这么个小游戏的话,要想内存不够怎么也得保存个一小时的路径吧233)

    发布于 2017-04-18 17:47:54 1 条评论 收藏
    !

    举报

    向奶牛关官方反馈,以净化良好的社区环境

    不感兴趣

  • 登录奶牛关账号即可参与讨论
嵌入内容
复制以下代码可将该奶牛关内容分享到其他网站。
预览
复制地址
复制以下链接可将该奶牛关该内容分享到其他网站。
举报

请选择你的举报理由

确定 取消