从用户操作中检测游戏对象移除
Detect gameobject removal from user action
我正在开发一个自动生成和发布脚本化对象的系统,该对象代表具有给定组件附加的游戏对象的唯一性。
生成过程似乎工作得很好,但是当我想要释放脚本化对象时遇到了问题。
给定的脚本被标记为 "ExecuteInEditMode" 并且正在实施 OnDestroy 方法来通知经理应该删除他的可编写脚本的对象。
问题是据我所知,OnDestroy 在 4 种情况下被调用:
- 点击播放
- 切换场景
- 手动删除(我唯一想使用的)
- 编辑器关闭时
我已经能够通过这个首先避免 2 :
if (Application.isPlaying == false && Math.Abs(Time.timeSinceLevelLoad) > 0.00001f)
但是我没有找到 "On editor shutdown" 的任何好的解决方案我已经看到 EditorApplication.quitting 可以用于这种情况,但是文档警告说当 unity 崩溃或被迫退出,我不想在编辑器崩溃时丢失所有可编写脚本的对象。
如果有人可以帮助我,我正在寻找一个可靠的解决方案来避免这个问题。
谢谢,祝你有愉快的一天
只处理应用程序退出事件。
this event is not called when unity crash or is forced to quit, and I don't want to lose all my scriptable object if the editor crash.
当 unity 崩溃时,您的程序也会崩溃,因此它无法以任何方式运行。只需确保在正常操作程序(即正常关机)下保存您的修改即可。
在 Unity3D 中,如果您编辑场景但未保存,如果编辑器崩溃,您将丢失所有更改。您在这里构建的内容也会发生同样的情况。为了减轻这种风险(因为预防即使不是不可能也是相当困难的),您可以选择每分钟保存一次,始终将每次更改保存到一个临时位置,或者保存例如每次播放。
例如,我在我的项目中添加了一个脚本,每当我按下播放键时自动保存场景,所以在编辑场景时我不时按下播放键进行测试,它都会自动保存。
我正在开发一个自动生成和发布脚本化对象的系统,该对象代表具有给定组件附加的游戏对象的唯一性。
生成过程似乎工作得很好,但是当我想要释放脚本化对象时遇到了问题。 给定的脚本被标记为 "ExecuteInEditMode" 并且正在实施 OnDestroy 方法来通知经理应该删除他的可编写脚本的对象。 问题是据我所知,OnDestroy 在 4 种情况下被调用:
- 点击播放
- 切换场景
- 手动删除(我唯一想使用的)
- 编辑器关闭时
我已经能够通过这个首先避免 2 :
if (Application.isPlaying == false && Math.Abs(Time.timeSinceLevelLoad) > 0.00001f)
但是我没有找到 "On editor shutdown" 的任何好的解决方案我已经看到 EditorApplication.quitting 可以用于这种情况,但是文档警告说当 unity 崩溃或被迫退出,我不想在编辑器崩溃时丢失所有可编写脚本的对象。
如果有人可以帮助我,我正在寻找一个可靠的解决方案来避免这个问题。
谢谢,祝你有愉快的一天
只处理应用程序退出事件。
this event is not called when unity crash or is forced to quit, and I don't want to lose all my scriptable object if the editor crash.
当 unity 崩溃时,您的程序也会崩溃,因此它无法以任何方式运行。只需确保在正常操作程序(即正常关机)下保存您的修改即可。
在 Unity3D 中,如果您编辑场景但未保存,如果编辑器崩溃,您将丢失所有更改。您在这里构建的内容也会发生同样的情况。为了减轻这种风险(因为预防即使不是不可能也是相当困难的),您可以选择每分钟保存一次,始终将每次更改保存到一个临时位置,或者保存例如每次播放。
例如,我在我的项目中添加了一个脚本,每当我按下播放键时自动保存场景,所以在编辑场景时我不时按下播放键进行测试,它都会自动保存。