在Unity的C#代码中,有一个抽象类BasePanel中获取了一个类panelManager,多个子类继承此类,如何在不知道当前使用的子类是哪一个的情况下在另一个代码中获取这个panelManager类
时间: 2023-12-03 17:47:29 浏览: 82
可以通过在BasePanel中定义一个抽象方法来实现这一需求,具体步骤如下:
1. 在BasePanel中定义一个抽象方法GetPanelManager(),该方法返回panelManager类的实例。
```
public abstract class BasePanel : MonoBehaviour
{
public abstract PanelManager GetPanelManager();
}
```
2. 在子类中重写GetPanelManager()方法,返回panelManager类的实例。
```
public class ChildPanel : BasePanel
{
private PanelManager panelManager;
void Start()
{
panelManager = GetComponentInParent<PanelManager>();
}
public override PanelManager GetPanelManager()
{
return panelManager;
}
}
```
3. 在另一个代码中,通过获取当前面板的BasePanel组件,然后调用GetPanelManager()方法获取panelManager类的实例。
```
BasePanel currentPanel = GetCurrentPanel();
PanelManager panelManager = currentPanel.GetPanelManager();
```
这样就可以在不知道当前使用的子类是哪一个的情况下,在另一个代码中获取panelManager类的实例了。
阅读全文