有没有办法阻止设计师将我的脚本附加到除地形类型之外的任何东西?
通常,当我创建脚本/ Component / MonoBehavior时,Unity允许设计者将其添加到任何游戏对象中。我该如何限制?
答案 0 :(得分:2)
我想到了两种方法,但没有一种方法非常优雅。
1)实施OnValidate()
。不利的一面是,只有在修改组件的值或进入/退出游戏模式时才会调用它。
void OnValidate() {
if (GetComponent<Terrain>() == null) {
Debug.LogError("You can't attach this component without terrain!");
DestroyImmediate(this);
}
}
2)使脚本在编辑器中运行,并实现OnAwake()
。但请注意,Update()
等方法将在编辑器中调用。
[ExecuteInEditMode]
class MyScript: MonoBehaviour {
void OnAwake() {
if (GetComponent<Terrain>() == null) {
Debug.LogError("You can't attach this component without terrain!");
DestroyImmediate(this);
}
}
}