从用户操作中检测游戏对象的删除

问题描述 投票:0回答:1

我正在开发一个系统,它可以自动生成和释放代表游戏对象唯一性的可脚本对象,并附加一个给定的组件。

生成过程看起来工作得很好,但是当我想释放可脚本对象时,我遇到了问题。给定的脚本被标记为 "ExecuteInEditMode",并且实现了OnDestroy方法来通知经理他的可脚本对象应该被删除。

  • 点击播放
  • 切换场景
  • 人工拆除(我唯一想用的)。
  • 关于编辑关闭

用这个方法我已经能够避免2个第一的情况了。

if (Application.isPlaying == false && Math.Abs(Time.timeSinceLevelLoad) > 0.00001f)

但我没有找到任何好的解决方案来解决 "编辑器关闭 "的问题,我看到EditorApplication.quitting可以用于这种情况,但文档警告说,当unity崩溃或被迫退出时,这个事件不会被调用,而且我不想在编辑器崩溃时失去所有的可脚本对象。

我正在寻找一个强大的解决方案来避免这个问题,如果有人能帮助我,请。

谢谢,祝您愉快

unity3d unity3d-editor
1个回答
1
投票

只是处理应用程序的退出事件。

当unity崩溃或被迫退出时,这个事件不会被调用,而且如果编辑器崩溃,我不想失去所有的可脚本对象。

当unity崩溃的时候,你的程序也会崩溃,所以无论如何都无法工作。只要确保在正常的操作程序下(所以正常关机)保存你的修改。

在Unity3D中,如果你编辑你的场景,而你不保存,如果编辑器崩溃,你会失去你所有的修改。同样的情况也会发生在你正在构建的东西上。为了减少这种风险(因为预防是相当困难的,如果不是不可能的话),你可以选择每分钟保存一次,总是将每次修改保存到一个临时位置,或者保存,例如每次播放。

例如,我在我的项目中添加了一个脚本,每当我按下播放键时就会自动保存场景,所以当编辑场景时,我时不时地按下播放键进行测试,然后就会自动保存。

© www.soinside.com 2019 - 2024. All rights reserved.