注:本篇为本人的学习笔记,所以有的地方估计只有本人能看懂,详情见b站up:Michael-studio
版本信息:unity2020.3
为什么要写敌人脚本的父类?
想象一下,敌人会有很多种,但是他们都统一的拥有一些特征,比如
都会死亡
都会发出某种声音(被打中,死亡等
但是在一些细微的地方又有不同,比如老鹰是飞翔的,而青蛙是跳跃的,那么为了省略相同的那些部分,我们可以写一个父类,让父类包含这些相同的部分,具体的enemy再从该父类上继承,以此来减少代码量。
比如一个Enemy的父类可以简单的写成(结构看懂即可
public class Enemy : MonoBehaviour
{
protected Animator anim;//动画 protected表示子类可以使用
protected AudioSource deathAudio;//音频
protected virtual void Start()//注意这里的Start 写法 virtual表示虚函数,子类中可以更改
{
anim=GetComponent<Animator>();
deathAudio=GetComponent<AudioSource>();
}
public void death()
{
.....
}
public void JumpOn()
{
.....
}
}
具体的enemy只需要继承Enemy父类即可,比如:
public class Enemy_Frog : Enemy
{
protected override void Start(){
base.Start();
.......
}
}
另外,当不知道具体是那个字类,只知道是某一大类时,创建实体对象的时候不需要精确到Enemy_Forg 只需要 Enemy即可,举个例子
Enemy ene=other.gameObject.GetComponent<Enemy>();
if(Anim.GetBool("falling"))
{
ene.JumpOn();
....
}
一个实用小技巧
比如你现在已经做好了一个敌人,是一只青蛙,但是你现在还要再做一个老鹰的敌人,除了需要继承父类写一个Eagle的脚本之外,肯定是要在heirachy中新建一个Eagle object的,那么除了某些component和青蛙不同之外,两者之间有部分component是可以共用的,这时候你再从新给eagle添加这些重复的部分就很麻烦,可以这样
copy你需要的component(三个点
然后呢 随便点一个component的三个点选择如下,就可以复制黏贴组件了,very方便