C# (Unity)在更改layermask时向游戏对象添加脚本
我想能够添加一个脚本到一个游戏对象时,改变其LayerMask。我希望在编辑器中更改它时发生这种情况,而不仅仅是在运行时 我该怎么做?我无法在谷歌上找到任何可能对我有帮助的必要信息C# (Unity)在更改layermask时向游戏对象添加脚本,c#,unity3d,C#,Unity3d,我想能够添加一个脚本到一个游戏对象时,改变其LayerMask。我希望在编辑器中更改它时发生这种情况,而不仅仅是在运行时 我该怎么做?我无法在谷歌上找到任何可能对我有帮助的必要信息 提前谢谢。我不认为有任何内置功能,但您可以使用、存储和比较它 使用可以使组件也在编辑器中执行某些方法: [ExecuteInEditMode] public class LayerChecker : MonoBehaviour { private int lastLayer; // could e.
提前谢谢。我不认为有任何内置功能,但您可以使用、存储和比较它 使用可以使组件也在编辑器中执行某些方法:
[ExecuteInEditMode]
public class LayerChecker : MonoBehaviour
{
private int lastLayer;
// could e.g be a UnityEvent (like onClick of buttons)
public UnityEvent OnLayerChanged;
private void Update()
{
// if layer didn't change do nothing
if(lastLayer == gameObject.layer) return;
// changed! -> what ever you want to happen
// e.g. invoke the event or call another method
OnLayerChanged.Invoke();
// store the new layer
lastLayer = gameObject.layer;
}
}
如果您想限制这种情况发生的位置,您还可以检查和/或我认为没有任何内置功能,但您可以使用、存储和比较它 使用可以使组件也在编辑器中执行某些方法:
[ExecuteInEditMode]
public class LayerChecker : MonoBehaviour
{
private int lastLayer;
// could e.g be a UnityEvent (like onClick of buttons)
public UnityEvent OnLayerChanged;
private void Update()
{
// if layer didn't change do nothing
if(lastLayer == gameObject.layer) return;
// changed! -> what ever you want to happen
// e.g. invoke the event or call another method
OnLayerChanged.Invoke();
// store the new layer
lastLayer = gameObject.layer;
}
}
如果您想限制这种情况发生的位置,还可以检查和/或我不确定在更改LayerMask时编辑器是否使用了回调方法。但这是一种可能性。您还可以添加一个自定义脚本,该脚本具有属性
ExecuteInEditMode
将其附加到每个游戏对象,并让它检查图层任务是否已更改,可能正在更新中,然后根据它更改为的LayerMask添加相应的脚本…我不确定当LayerMask更改时编辑器是否使用回调方法。但这是一种可能性。您还可以添加一个自定义脚本,该脚本具有属性ExecuteInEditMode
将其附加到每个游戏对象,并让它检查图层任务是否已更改(可能在更新中),然后根据其更改为的图层任务添加相应的脚本。。。