Unity3D普通类和继承自MonoBehaviour类的区别
Unity3D普通类和继承自MonoBehaviour类的区别。如果创建新的类时,使用的是在unity editor的project视图中右键,create javascript or c#方式,那么创建的类都是默认继承自MonoBehaviour, 生成后可以查看类文件,会发现c#类继承自MonoBehaviour, 虽然javascript的类前面没有这个继承自MonoBehaviour的关键字样,但是默认也是从它继承而来,这是Unity的规定。
这样的类和普通没有继承自MonoBehaviour的类,有什么区别呢?继承自MonoBehaviour的类,不需要自己创建它的实例,也不能自己创建(如 new 类名),编译的时候可以编译过去,但是执行的时候会给你一个错误在unity editor的console窗口,并且你new 后得到的东西为空;其实这是Unity的一个bug,既然继承自MonoBehaviour的类不能new出来,为什么在编译的时候就给个错误,而是在运行时,如果没有看到unity editor的console窗口的内容真的很难知道为什么new的东西为空。
为什么不需要自己创建呢?因为所有从MonoBehaviour继承过来的类,Unity都会自动创建实例,并且调用被重载的方法,如我们经常用到的Awake, Start, Update等。而普通类,就可以用new来创建实例了。
相关文章
- Delphi 类方法和普通方法的区别 .
- 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法
- C++中的链表节点用模板类和用普通类来实现的区别
- Java 继承Thread类和实现Runnable接口的区别
- python3中类的继承以及self和super的区别详解
- Unity3D普通类和继承自MonoBehaviour类的区别
- 继承MonoBehaviour类的优缺点和相关报错
- Unity3d的脚本类为什么要尽量避免继承MonoBehaviour类
- javascript中类式继承和原型式继承的实现方法和区别
- 静态函数里定义的变量,不为所有对象共享,类的静态变量和类外全局变量区别,静态函数和普通函数区别