Unity3d - 初学篇 Event Functions 的 继承 机制
我们知道Start() Update() 等之类的 事件函数 在Unity 主线程中是依次调用的。至于调用的顺序可以查手册。
由此继承机制也会发生一些改变。
测试一:
public class MyTest2 : MonoBehaviour
{ void Start () {
//EventDelegate.Add(tween.onFinished, Test, true);
Debug.Log(" MyTest2 Start ");
} void Update()
{
Debug.Log(" MyTest2 Update ");
}
}
public class MyTest3 : MyTest2
{ // Use this for initialization
void Start()
{
Debug.Log(" MyTest3 Start ");
} void Update()
{
Debug.Log(" MyTest3 Update ");
}
}
运行:

测试二:
那么 如果把MyTest3 的Start Update 注释掉会怎样了。
public class MyTest2 : MonoBehaviour
{ void Start () {
//EventDelegate.Add(tween.onFinished, Test, true);
Debug.Log(" MyTest2 Start ");
} void Update()
{
Debug.Log(" MyTest2 Update ");
}
} public class MyTest3 : MyTest2
{ // Use this for initialization
//void Start()
//{
// Debug.Log(" MyTest3 Start ");
//} //void Update()
//{
// Debug.Log(" MyTest3 Update ");
//}
}
运行:

熟悉c# 的 都知道,不加有修饰符 默认是 private 的。看来 unity 对这类 函数 应该是 特殊 处理了。
测试三:
既然这样 我们再看看 别的继承特性。
public class MyTest2 : MonoBehaviour
{
//virtual or abstract members cannot be private
public virtual void Start () {
//EventDelegate.Add(tween.onFinished, Test, true);
Debug.Log(" MyTest2 Start ");
} void Update()
{
Debug.Log(" MyTest2 Update ");
}
}
public class MyTest3 : MyTest2
{ // Use this for initialization
public override void Start()
{
Debug.Log(" MyTest3 Start ");
} void Update()
{
Debug.Log(" MyTest3 Update ");
}
}

结果看来和测试一是一样的。也就是说先会找最终实例化的有没有,然后再找父类有没有。
Unity3d - 初学篇 Event Functions 的 继承 机制的更多相关文章
- JavaScript 原型与继承机制详解
引言 初识 JavaScript 对象的时候,我以为 JS 是没有继承这种说法的,虽说 JS 是一门面向对象语言,可是面向对象的一些特性在 JS 中并不存在(比如多态,不过严格来说也没有继承).这就困 ...
- 带你理解【JavaScript】中的继承机制
前文 总所周知,继承是所有OO语言中都拥有的一个共性.在JavaScript中,它的继承机制与其他OO语言有着很大的不同,尽管ES6为我们提供了像面向对象继承一样的语法糖,但是其底层依然是构造函数,所 ...
- Javascript 构造函数原型继承机制
我们先聊聊Js的历史,1994年Netscape公司发布了Navigator浏览器0.9班.这是历史上第一个比较成熟的网络浏览器.轰动一时.但是,这个版本的浏览器只能用来浏览,不具备交互功能,最主要的 ...
- javascript继承机制的设计思想(ryf)
我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...
- javascript 之 prototype继承机制
理解Javascript语言的继承机制 javascript没有"子类"和"父类"的概念,也没有"类"(class)和"实例&qu ...
- Execution Order of Event Functions
In Unity scripting, there are a number of event functions that get executed in a predetermined order ...
- Javascript类继承-机制-代码Demo【原创】
最近看到<Javascript设计模式>,对js模拟的”继承方式“有了更深一步的了解,虽然之前也总是用到prototype.new ,但只是知其然不知所以然,现在将类继承的方法整理如下,暂 ...
- 创建对象的最好方式&最好的继承机制(代码实例)
/* 创建对象的最好方式:混合的构造函数/原型方式, *用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法) */ function People(sname){ this.nam ...
- js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法。
js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } Class ...
随机推荐
- 对于javascript的词法作用域的思考
曾经看到过这样一段有意思的程序: var a=3; function scopeTest(){ console.log(a); var a=2; console.log(a); } scopeTest ...
- id,class,name区别
id,class,name区别 id:标签唯一标识,好比我们身份证号码,具有唯一性.JS常用document,getGlementBy(id). class:标签的类别,可重复使用,CSS常用. na ...
- VKP5 Price Calculation – List Variant & KZPBL (Delete site level)
List Variant: Configuration in Logistic General –> Retail Pricing –> Sales Price Calculation – ...
- .NET中的注释种类,单行注释、多行注释、文档注释。。。
注释不是给编译器看的,而是给程序员看的.是程序员之间交流的一种方式.好的程序员一定要有完善的注释. .NET注释类型. 1.单行注释 // a.当代码行比较短时,注释可以放在代码后面. b.当代码行 ...
- 【风马一族_Python】 更替pip的版本
替换电脑上python中的pip的版本 例子: 下载的文件:pip-8.1.1-py2.py3-none-any.whl 下载地址:https://pypi.python.org/pypi/pip/# ...
- 不同浏览器的DNS超时重发机制(一)
一.Chrome浏览器(37.0.2062.124 m) 1.在Win7环境下,DNS超时重发的时间间隔为:2s.2s.2s.2s(在这个时刻重复发2个DNS请求).2s.4s,再经过大约14s左右, ...
- PHP实现链式操作的原理
在一个类中有多个方法,当你实例化这个类,并调用方法时只能一个一个调用,类似: db.php <?php class db{ public function where() { //code he ...
- How to check Windows 7 OS is permanently activated?[Windows 7]
Press Windows + R, then you can enter : slmgr.vbs -xpr
- dotNet中初始化器的使用
dotNet中初始化器的使用 2013年12月7日 13:27 有两类初始化器: 对象初始化器和集合初始化器 比如现在有一个User类: Public class User { public in ...
- ORACLE 11G 配置DG 报ORA-10458、ORA-01152、ORA-01110
操作系统: Oracle Linux Server release 5.7 数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.3 ...