Unity3d编辑器:如何防止在退出播放模式时撤消更改?

Unity3d编辑器:如何防止在退出播放模式时撤消更改?,unity3d,unity5,Unity3d,Unity5,显然,这是一个初学者的问题(我也是),但它让我发疯,我找不到任何提及: 我偶尔会忘记退出播放模式,继续构建我的UI并进行对象和更改,结果发现我仍然处于播放模式,一旦取消按下播放按钮,这些将被清除!我想Unity Editor有其允许在播放模式下编辑脚本/场景的原因(很高兴听到一些示例,可能是测试场景?),但我这里的主要问题是: 我有没有办法阻止这种行为?或者至少使用一些技巧来防止me在播放模式下进行更改?(除了变得偏执并不断检查……) 多谢各位 附言:是时候回到Unity并重建我丢失的UI了……

显然,这是一个初学者的问题(我也是),但它让我发疯,我找不到任何提及:

我偶尔会忘记退出播放模式,继续构建我的UI并进行对象和更改,结果发现我仍然处于播放模式,一旦取消按下播放按钮,这些将被清除!我想Unity Editor有其允许在播放模式下编辑脚本/场景的原因(很高兴听到一些示例,可能是测试场景?),但我这里的主要问题是:

我有没有办法阻止这种行为?或者至少使用一些技巧来防止me播放模式下进行更改?(除了变得偏执并不断检查……)

多谢各位


附言:是时候回到Unity并重建我丢失的UI了……

其他Unity程序员在我之前就遇到过这个问题,他们提出了一个简洁的解决方案。 在播放模式“播放模式色调”下,将UI设置为不同的颜色

您可以在这里阅读详细信息(最初发布于2009年,但我已经检查过它在最新的Unity 5.3中仍然有效):


没有任何设置可以防止在播放模式下更改内容,但有一些方法可以减少在播放模式下丢失更改的机会

1编辑->首选项..->颜色。现在,在右侧,将播放模式色调更改为红色。这将提醒您正在更改播放模式

2。在播放过程中,单击您更改的每个组件的齿轮图标,然后单击复制组件。使用播放模式完成后,选择要保留其更改的组件。再次单击齿轮图标,这次单击粘贴组件值

3。编写一个编辑器插件,可以为您实现这一点。这很难,但也是可能的

在进入播放模式时,使用事件查找。将所有游戏对象public重要的变量(如
变换
/
刚体
属性)存储在列表中

等待停止事件触发,然后询问您自己要覆盖哪些游戏对象设置。然后覆盖选定游戏对象的属性,就是这样

这方面的有用API:

EditorApplication.isPlaying
EditorApplication.isPaused
EditorApplication.isPlayingOrWillChangePlaymode
EditorApplication.playmodeStateChanged += callBackFunc;
EditorApplication.HierarchyWindowItemCallback
EditorApplication.ProjectWindowItemCallback

注意:根据Unity的说法,一个可以保存播放时间更改的功能正在构建中,不久将发布,但目前看来上述功能是唯一的方法。

您可以在播放模式下选择要保留的对象,用
Ctrl+C
复制它们,然后在返回编辑模式后,使用Ctrl+V将它们粘贴回。然后你可以从场景中删除原稿或复制单个组件的值,如@Programmer Suggestive。

@GJTT1是的,这很痛苦,他们在接到许多投诉后开始处理。他们最近也加入了.NET基金会,并在.NET 6上工作。在未来的Unity版本中有太多的好东西。感谢@Programmer提供了一个漂亮而详细的答案!我不能“接受”两个答案(我希望我能接受,因为你的答案也值得),但至少我投了赞成票@福蒂斯克,没关系,这就是团结。如果你不喜欢它,就不要使用它。请注意,资产存储中有许多东西允许您“在播放期间保存”和其他变体。希望有帮助。谢谢@yinch!您与unity讨论的链接提供了许多很好的解决方案—正如您提到的,更改播放模式色调可能是最有帮助的。另外,我在那里读到了一个关于启用最大化播放的技巧-因此完全隐藏面板。