类的基本函数学习
来源:互联网 发布:网络兼职诈骗新闻最新 编辑:程序博客网 时间:2024/05/16 18:38
转自:http://www.tuicool.com/articles/7j2YRz
1.unity3D中脚本类若不是MonoBehaviour子类,则不含回调函数,不可添加给游戏对象,即要自行在其他MonoBehaviour子类中实例化。
因此对于想要随场景载入自动实例化,且在场景中时时存在的类,就算不想用到update等回调函数最好也作为MonoBehaviour的子类。
2.unity3D的脚本类中即使是MonoBehaviour子类,如果不把其附加在GO身上,构造函数和Start()函数也不会被调用。
3.对于MonoBehaviour子类,其本身的构造函数最好不要用,而去用void Start()等回调函数去初始化!
问题:用写入和附加写入文件流测试过,脚本已经附在GO上。当VS中脚本修改后回到unity时,构造函数会被调用一次;当运行时,构造函数会被调用三次,文本出现三次附加字符串,但类中计数器却没连加三次;当发布(build)的时候又会被调用几次。假设脚本没有附在GO上,则以上问题不出现,且手动附上GO时会自动调用一次构造函数。
但上述问题包括运行时出现的三次连续调用,对发布出来的游戏并没有影响,不会出现连续乱调用。但由于可能会干扰调试过程,因此不推荐使用。用void Start()时以上4个问题都不会出现。
除了MonoBehaviour子类,在unity中出现的其他类,比如与所在文件同名的非MonoBehaviour子类还有MonoBehaviour子类所在文件的其他外部类,其构造函数并不会受到影响。
4.脚本中MonoBehaviour子类,其构造函数和Start()函数是不一样。start()函数和awake()函数是由主线程(main thread)调用的,构造函数是由载入线程(loading thread,载入场景时用的)调用的。有部分Unity3D函数只能由主线程调用,比如PlayerPrefs的静态函数。
5.Awake()函数先于Start()函数被调用,Update()在两者之后。
6.OnGUI,update和fixedupdate都会循环被调用。
①fixedupdate固定时间间隔被调用,可以在Edit->Project Setting->time下面的Fixed Timestep修改间隔时间。常用于刚体运动(更真实)。
update在每次渲染新的一帧的时候被调用,机器不同其帧速率不同,会使每秒调用次数也会不同。即使在同一台机器,不同秒帧速率也会因为场景需要渲染的三角面数量不同,而update被调用次数不同。
OnGUI每帧被调用至少一次,据说一般会有多次(官网说的)。
②Time.deltaTime在fixedupdate使用,返回的值是Fixed Timestep,但是在update和OnGUI内使用返回的是complete the last frame的时间。但由于OnGUI一帧常被调用多次,因此会使函数返回结果多次相同。
③Time.timeScale可以用来做运动速度缓慢或加速的特效(勉强也可以来做暂停功能),当其为0时fixedupdate不会被调用,官网建议当设置为0和1之间(不包括01)时调用以下语句去改变fixedupdate调用的间隔,Time.fixedDeltaTime=0.02* Time.timeScale;,0.02是默认的fixedupdate调用间隔,用Time.fixedupdate代替应该会更好。
7.Void OnMouseDown(){..}当鼠标在一个GUIElement或碰撞器(Collider)的游戏对象按下时执行内部代码。
Void OnMouseOver(){..}当鼠标在一个GUIElement或碰撞器(Collider)的游戏对象按下动作抬起时执行内部代码。
可以通过这个来改变显示颜色。
- 类的基本函数学习
- unity3d 学习笔记(七) 类的基本函数学习
- OpenCV基本函数学习
- Oracle基本函数学习
- OpenCV基本函数学习
- 基本的类函数和对象函数
- Oracle的emp表的基本函数学习
- Matlab7.0学习笔记(6)基本的绘图函数
- Matlab7.0学习笔记(7)基本的绘图函数
- qibuild学习之二------基本的qibuild-CMake函数
- MYSQL入门学习之十三:自定义函数的基本操作
- MYSQL入门学习之十三:自定义函数的基本操作
- Oracle学习笔记--3、基本函数的使用
- 我的Python学习之路之基本语法-函数
- Swift学习记录 -- 11.函数的基本使用
- Python学习(基本函数)
- Python基本学习—函数
- 派生类的基本函数的实现
- 堆和栈的区别
- Mahout实战视频教程
- js子父窗口相互通信
- woocommerce中商品页面添加多说评论通用代码配置教程
- Qt: 查询数据库与tableview很容易一起使用
- 类的基本函数学习
- elasticsearch之mapping types
- sed中关于pattern space和hold space的小实例一则(tac)
- Emmet(Zen coding)HTML代码使用技巧七则
- Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
- vmware-linux虚拟机上网配置
- 观察者模式在项目中的应用
- Android修改LED指示灯
- 在Android Manifest中出现Use '$' instead of '.' for inner classes (or use only lowercase letters in pac