C# 启用不同对象时是否可以运行OnEnable()?
我想知道如果启用了子对象而不是包含脚本的对象,是否可以使onEnable()函数工作。在本例中,我在父对象中创建了一个带有主脚本的菜单,以及一些用于在与主对象交互的子对象上检测onEnable()的脚本,因此我希望通过仅在父对象中使用脚本来简化此操作。这是一个选项还是我必须坚持使用多个脚本 这将是一个辅助脚本(MenuOpenUpdate)。在两个空白处更改其值的bool将与主脚本交互C# 启用不同对象时是否可以运行OnEnable()?,c#,unity3d,C#,Unity3d,我想知道如果启用了子对象而不是包含脚本的对象,是否可以使onEnable()函数工作。在本例中,我在父对象中创建了一个带有主脚本的菜单,以及一些用于在与主对象交互的子对象上检测onEnable()的脚本,因此我希望通过仅在父对象中使用脚本来简化此操作。这是一个选项还是我必须坚持使用多个脚本 这将是一个辅助脚本(MenuOpenUpdate)。在两个空白处更改其值的bool将与主脚本交互 void Start(){ public static bool MenuOpenUpdater; } pr
void Start(){
public static bool MenuOpenUpdater;
}
private void OnDisable()
{
MenuOpenUpdater = false;
}
private void OnEnable()
{
MenuOpenUpdater = true;
}
这将是主脚本(GameMenu),我希望有onEnable()和onDisable(),但它与包含辅助脚本的对象一起执行,所以我只能使用这个脚本
void Start(){
private bool MenuOpen;
}
void Update()
{
MenuOpen = MenuOpenUpdate.MenuOpenUpdater;
}
}
如您所见,辅助脚本会根据其处于活动状态还是禁用状态更改bool值,然后将该值发送到主脚本。我期望的结果是,通过检测父对象脚本何时启用或禁用子对象,在单个脚本上实现这一点
我不知道这是否可行,只是让它变得更简单,如果不能做到,我可以坚持使用多个脚本,任何帮助都将不胜感激
void Start(){
public static bool MenuOpenUpdater;
}
private void OnDisable()
{
MenuOpenUpdater = false;
}
private void OnEnable()
{
MenuOpenUpdater = true;
}
public EventHandler event ObjectEnabled;
void OnEnabled()
{
ObjectEnabled?.Invoke(this, new EventArgs());
}
并由外部用户订阅:
InnerObjectReference.ObjectEnabled += InnerObjectEnabledHandler;
public void InnerObjectEnabledHandler(object sender, EventArgs e) {
...
}
解决方案是使用gameObject.activeInHierarchy来了解对象是否处于活动状态。非常感谢你的回答,这个解释对我帮助很大。