Unity C#继承与多态

父类——道具

using UnityEngine;
using System.Collections;
namespace Dj
{
    public class daoju : MonoBehaviour
    {

        // Use this for initialization
        public string Name;
        public float HP;

        void Start()
        {

        }

        // Update is called once per frame
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                Debug.Log("AAAAAA" + this.Name);
            }
        }
        public virtual void OnCollisionEnter(Collision collisionInfo)
        {
            Debug.Log("XXXXX+HP" + this.Name);
        }
    }
}


子类——继承道具

using UnityEngine;
using System.Collections;
using Dj;

public class jichengdaoju : daoju {

    // Use this for initialization
    public float MP;
    
    void Start () {

    }
    
    // Update is called once per frame
    void Update () {
    
    }

    public override void OnCollisionEnter(Collision collisionInfo)
    {
        //base.OnCollisionEnter(collisionInfo);
        Debug.Log("OOOOO+MP"+this.Name);
    }

    public void print1()
    {
        Debug.Log("zileifanfangfa>>>>>>>>>>>>>>>>");
    }
}

其中 子类重写了父类中的碰撞检测函数,并且新加了一个MP字段和一个print1的新方法

在另一个脚本中进行对父类和子类的使用结果

using UnityEngine;
using System.Collections;
using Dj;

public class other : MonoBehaviour {

    // Use this for initialization
    public daoju a = new daoju();
    public jichengdaoju b = new jichengdaoju();
    
    void Start () {
        a = transform.GetComponent<daoju>();
        b = transform.GetComponent<jichengdaoju>();
        b.print1();
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    void OnCollisionEnter(Collision collisionInfo)
    {
        a.OnCollisionEnter(collisionInfo);
        b.OnCollisionEnter(collisionInfo);
        
    }

}

可见,a调用的父类的OnCollisionEnter方法,并且调用不到子类的新方法print1
b只能调用改写后的OnCollisionEnter方法,也可以使用自己的新方法print1

特别的是,当在父类中的Update 中写的按下空格键打出Debug的语句,如果子类中不写Update函数,那么子类的实例会自动调用父类的Update中的语句,如果子类自己写了Update的话就执行自己的Update

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,805评论 18 399
  • 一、继承 当两个事物之间存在一定的所属关系,即就像孩子从父母那里得到遗传基因一样,当然,java要遗传的更完美,这...
    玉圣阅读 4,704评论 0 2
  • 继承和多态 1. 继承的优缺点 优点:(1)子类可以灵活地改变父类中的已有方法;(2)能够最大限度的实现代码重用。...
    MinoyJet阅读 3,921评论 0 0
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,655评论 0 11
  • 刚刚在看《急诊科医生》哭得稀里哗啦。一个男孩在爆炸中救了个小女孩,他自己被炸的血肉模糊,满脸是血,送他来的人大喊:...
    风中的糯米阅读 4,099评论 3 2

友情链接更多精彩内容