【发布时间】:2023-03-20 05:16:01
【问题描述】:
假设您有一个微不足道的预制件“盒子”,我们会说它只不过是一个标准米立方体。
1 - 预制框位于您的项目面板中
2 - 将其拖到场景中
3 - 显然它现在也出现在 Hierarchy 面板中,并且可能被选中并显示在 Inspector 中
需要明确的是,当你这样做时,游戏不是 Play,你只是处于普通的编辑器模式。
是否可以制作一个脚本(“编辑器脚本”?),
当您在上面执行“1”和“2”时,(同样是在编辑器模式下,而不是在游戏期间)
当 3 发生时,我们可以影响场景中的新 Box 项目
所以,简单的例子:无论你把它放在哪里,我们都会将 Z 位置设置为“2”。
简而言之:编辑代码,这样每次您将预制件 P 拖到场景中时,它会将位置 z 设置为 2.0。
这在 Unity 中可行吗?我对“编辑脚本”一无所知。
这似乎很明显应该是可能的。
【问题讨论】:
-
这不太正确,Jin ... 否则,您必须向我展示您在整个代码中的意思??
-
我不认为有一个 Unity API 可以解决这个问题,但我认为你应该在问题中添加你尝试过的代码。我这么说是因为您之前的最后 3 个问题,包括这个问题。
-
我已经对此进行了研究,可以做到但很复杂。这不仅仅是使用
Selection.activeGameObject和大量代码。您需要一种方法来区分对象实际拖到层次结构的时间和对象在层次结构中重新排列的时间。这两者都会触发一个回调函数。您还需要实现变量的保存和加载,因为这是一个编辑器插件,只要您点击“播放”按钮导致错误,它们就会重置 -
Unity 应该为此添加功能。有
EditorApplication.hierarchyChanged,但在场景中重新排列对象时也会调用它。实际上,这里的Selection.activeGameObject并不是不相关的,因为当您将对象从 Project 拖到 Hierarchy 选项卡时,会自动选择对象,因此在Selection.activeGameObject中。可以和EditorApplication.hierarchyChanged一起使用 -
为什么在场景编辑器中如此重要?
标签: c# unity3d unity3d-editor