Unity点滴

1. 创建太阳

GameObject->Create Other->Point light或者Directional Light, 这时候你选中的光源会被加进场景中,选中它,然后在inspector view中将Flare的值改为sun。这里需要sun这种flare,所以需要事先将flare asset导入进工程,它是属于unity standard assets的一部分。

2. 创建影子

在方向光的inspector view中,将shadow type改为hard shadows 或者是soft shadows。默认是no shadows. 注意这个只有在专业版才会支持,你选hard 或者soft shadows,它就会给你一个warning-realtime shadows requre unity pro.

 

3. Update()和FixedUpdate()

从字面上理解,它们都是在更新时会被调用,并且会循环的调用。

但是Update会在每次渲染新的一帧时,被调用。

而FixedUpdate会在每个固定的时间间隔被调用,那么要是Update 和FixedUpdate的时间间隔一样,是不是就一样呢?答案是不一定,因为Update受当前渲染的物体,更确切的说是三角形的数量影响,有时快有时慢,帧率会变化,update被调用的时间间隔就发生变化。

但是FixedUpdate则不受帧率的变化,它是以固定的时间间隔来被调用,那么这个时间间隔怎么设置呢?

Edit->Project Setting->time下面的Fixed timestep。

 

4. 普通类和继承自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来创建实例了。

 

5.  用  .transform.position得到场景中game object的空间坐标指的是它的中心点所在的坐标。

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *