C# 将子脚本强制转换为父脚本并保持子脚本行为-统一
我对一些脚本有问题 父脚本:C# 将子脚本强制转换为父脚本并保持子脚本行为-统一,c#,unity3d,inheritance,C#,Unity3d,Inheritance,我对一些脚本有问题 父脚本: ParentScript : MonoBehavior { public void test() { // DoSomething } } 子脚本: ChildScript : ParentScript { public void test() { // DoSomethingSpecific } } 子脚本分配给特定的武器预制件,而父脚本分配给其他更基本的武器。 武器预制件储存在游戏对象列表中,对于每一件武器,我想获
ParentScript : MonoBehavior {
public void test() {
// DoSomething
}
}
子脚本:
ChildScript : ParentScript {
public void test() {
// DoSomethingSpecific
}
}
子脚本分配给特定的武器预制件,而父脚本分配给其他更基本的武器。
武器预制件储存在游戏对象列表中,对于每一件武器,我想获得脚本并执行测试方法。以下是我为每种武器所做的尝试:
currentWeapon.GetComponent<ParentScript>().test();
但是,不幸的是,对于特定的武器,只调用父脚本测试函数,而不调用子脚本测试函数
您有更好的解决方案来管理此问题吗?父级的方法应标记为虚拟,以便在子级中重写。 在子方法中,需要将其标记为覆盖,如下所示:
public class TestParent : MonoBehaviour
{
virtual public void Test()
{
Debug.Log("InParent");
}
}
public class TestChild : TestParent
{
public override void Test()
{
Debug.Log("InChild");
}
}
GetComponent<TestParent>().Test(); // show "inChild" if the component if a TestChild instance.
virtual关键字用于修改方法、属性、索引器或事件声明,并允许在派生类中重写它
重写修饰符是扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现所必需的
参考:
这个问题与我无关。这是