unity2D:敌人脚本的父类 | 您所在的位置:网站首页 › 老鹰的敌人 › unity2D:敌人脚本的父类 |
注:本篇为本人的学习笔记,所以有的地方估计只有本人能看懂,详情见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(); deathAudio=GetComponent(); } 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(); if(Anim.GetBool("falling")) { ene.JumpOn(); .... } 一个实用小技巧比如你现在已经做好了一个敌人,是一只青蛙,但是你现在还要再做一个老鹰的敌人,除了需要继承父类写一个Eagle的脚本之外,肯定是要在heirachy中新建一个Eagle object的,那么除了某些component和青蛙不同之外,两者之间有部分component是可以共用的,这时候你再从新给eagle添加这些重复的部分就很麻烦,可以这样 copy你需要的component(三个点 然后呢 随便点一个component的三个点选择如下,就可以复制黏贴组件了,very方便
|
CopyRight 2018-2019 实验室设备网 版权所有 |