unity中脚本之间的继承有什么作用

我有一个人类的脚本
脚本中获取了挂载该脚本对象身上的组件
写一个学生类继承人类
挂载学生类的对象也就不会挂载人类的脚本,无法获取组件返回null
那我需要获取组件,又需要继承人类,怎么做能行

是不是哪里写错了,比如忘了把GameObject拖到新脚本里,正常是没问题的

可以在学生类中重写人类的脚本,在重写的脚本中调用人类的脚本,从而获取组件。比如哈

public class Student : Human
{
    public override void GetComponents()
    {
        base.GetComponents();
        // 获取组件
    }
}

学生类获取组件返回null,这个和你继承人类脚本没关系。
1,获取组件最简单的方法就是public GameObject Obj;
2,然后把你想要获取的组件拖上去。
若是你想在子类中获得父类已经获取的组件应这么写

public class Human : MonoBehaviour {
   protected  AudioSource au;
   protected virtual void Start ()
   {
        au = GetComponent<AudioSource>();
   }   
}
public class Student : Human {
   protected override void Start ()
   {
          base.Start ();//Student 类获得了Human 类的au。
   }   
}

在 Unity 中,如果你需要在继承脚本的对象中访问组件,可以在继承脚本的 Start 方法或 Awake 方法中通过 GetComponent 方法获取组件。例如:

public class Student : Human 
{
    private MyComponent myComponent;

    private void Start() 
    {
        myComponent = GetComponent<MyComponent>();
    }
}


注意,如果被挂载的学生类对象上没有挂载该组件,GetComponent 方法将返回 null。因此,请在使用获取到的组件之前进行非空检查。

在学生类的脚本中重写 Start 方法或 Awake 方法,在这两个方法里面调用 base.Start 或 base.Awake 方法,这样可以让学生类继承人类的脚本,并在自己的脚本里面进行组件的获取操作。

继承可以使学生类能够继承人类的所有方法和属性,但是不能继承人类的挂载组件。可以在学生类的脚本中重新获取组件,或者使用人类脚本中已获取的组件并在学生类中通过引用访问。例如:


public class Human : MonoBehaviour {
    public Transform transform;

    private void Start() {
        transform = GetComponent<Transform>();
    }
}

public class Student : Human {
    private void Start() {
        // Use the transform component from the Human class
        transform.position = new Vector3(0, 0, 0);
    }
}