unity:C#中的类的继承
·
// 祖辈:有一个"人"的蓝图
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时,意味着:
-
获得超能力:自动拥有
Start()、Update()、gameObject、transform等 -
可以挂到游戏物体上:在Inspector中能把这个脚本拖到GameObject上
-
参与游戏循环:Unity会自动调用你的
Start()、Update()等方法 -
与其他组件交互:可以使用
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; // 自己特有的
英雄.升级(); // 自己特有的
更多推荐


所有评论(0)