// 祖辈:有一个"人"的蓝图
public class 人
{
    public string 名字;
    public void 吃饭() { }
    public void 睡觉() { }
}

// 父辈:继承了"人"的所有特性,还增加了自己的特性
public class 程序员 : 人  // 冒号表示继承
{
    public void 写代码() { }
}

// 使用:
程序员 小明 = new 程序员();
小明.名字 = "小明";     // 从"人"那里继承来的
小明.吃饭();           // 从"人"那里继承来的  
小明.写代码();         // 自己特有的

继承就是:儿子自动获得父亲的所有能力和财产,还可以发展自己的新能力。

Unity中的具体例子

例子1:MonoBehaviour 继承

// MonoBehaviour 就像"游戏物体组件"的祖宗
public class MonoBehaviour
{
    // 所有组件都有的基础能力
    public void Start() { }
    public void Update() { }
    public GameObject gameObject { get; }
}

// 你的脚本继承了这个祖宗
public class PlayerController : MonoBehaviour
{
    // 自动获得所有基础能力,还可以添加新能力
    public void Move() { }
    
    void Start() 
    {
        // 可以直接使用gameObject,因为从MonoBehaviour继承来的
        Debug.Log(gameObject.name);
    }
}

在Unity中的实际意义

当你的类继承MonoBehaviour时,意味着:

  1. 获得超能力:自动拥有Start()Update()gameObjecttransform

  2. 可以挂到游戏物体上:在Inspector中能把这个脚本拖到GameObject上

  3. 参与游戏循环:Unity会自动调用你的Start()Update()等方法

  4. 与其他组件交互:可以使用GetComponent<>()等方法

    // 这个类就是一个完整的Unity组件
    public class MyScript : MonoBehaviour
    {
        void Start()    // 从MonoBehaviour获得的超能力
        {
            // 可以直接使用,因为继承来的
            transform.position = new Vector3(0, 0, 0);
            gameObject.name = "我的物体";
        }
        
        void Update()   // 从MonoBehaviour获得的超能力
        {
            // 每帧自动调用
        }
    }

    在Unity中,: MonoBehaviour就是在说:
    "我要成为一个Unity组件,请给我所有组件该有的超能力!"

    这样你就不用从零开始造轮子,直接站在巨人的肩膀上开发游戏!

例子2:游戏角色继承

// 基础角色类
public class 角色
{
    public string 名称;
    public int 血量;
    public void 受伤() { }
}

// 玩家角色:继承基础角色,增加玩家特有功能
public class 玩家角色 : 角色
{
    public int 经验值;
    public void 升级() { }
}

// 怪物角色:继承基础角色,增加怪物特有功能  
public class 怪物角色 : 角色
{
    public int 掉落金币;
    public void 巡逻() { }
}

// 使用:
玩家角色 英雄 = new 玩家角色();
英雄.名称 = "勇士";  // 从"角色"继承的
英雄.血量 = 100;    // 从"角色"继承的
英雄.经验值 = 50;   // 自己特有的
英雄.升级();        // 自己特有的

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐