zoukankan      html  css  js  c++  java
  • Unity学习笔记—— 常用脚本函数

    1. Awake() Start() Update() FixedUpdate() 

      unity 是单线程的 , 对于unity后台执行脚本,每个脚本的Awake、Update、LateUpdate、FixedUpdate,方法在后台都有一个总汇。把每个

    后台的Awake()

    {

           脚本0中的Awake();

           脚本1中的Awake();

           脚本2中的Awake();

    }

    后台的方法 Awake、Update、LateUpdate、FixedUpdate等等都是按照顺序,等所有子脚本中的Awake执行完毕后在去执行 Start 、Update、LateUpdate等等。所以这里也就解释了Unity没有多线程的概念。

    后台的Update()

    {

           脚本0中的Update();

           脚本1中的Update();

           脚本2中的Update();

    }

    Awake函数 在脚本未启用前 会被执行,而Start 在脚本启用后才会被执行 。一般来说 变量对脚本的引用操作等,放在Awake里面 。而第一次的对对象的操作,可放在Start里面

    2. 向量 

      在二维和三维坐标系中 ,向量 可以标记位置,既有方向又有长度。 速度是有方向的,而速率没有方向,所以说向量也可以表示速度。 一个位置向量 Vector3(5,6,0) ;一个速度向量vector3(4,6,0),表示每小时向 x方向移动 4 ,y方向移动 6。 那么 当前位置向量 Vector3(5,6,0)+速度向量Vector3(4,6,0) 就是 物体一小时后的位置Vector3(9,12,0).

    3. 线性插值

       两个 值之间线性插值,在开发一些游戏时很有用。Unity可以使用Lerp()实现插值 功能。线性插值可以计算两个值之间的某个比例的值。 3,5之间,50%的线性差值等于4。 unity有多种不同类型的Lerp() 函数。比如,3-5之间 ,50%的线性插值等于 4 。因为4 处于 3和 5之间的50%。

          Mathf.Lerp(3f,5f,0.5f);  返回 4 

          Color.Lerp() 和 Vector3.Lerp() ,起始 和 终止值 则是 Vector3 ,第三个参数 还是差值比例,Color.Lerp的话是两个颜色按比例的出的混合颜色。 Vector3().Lerp() 则是、

        Vector3 from = new Vector3 (1f , 2f , 3f);

        Vector3 to = new Vector3(5f, 6f , 7f) ;

        Vector3 result = Vector3.Lerp(from , to , 0.75f);

     返回的结果 (4,5,6) 

      同时Lerp() 除了 让一个值随着 时间平滑 的进行变化 。比如让位置平滑的 过度,可以使用 Vector3.Lerp(from , to , 0.75f); 这是每帧变化,如果不用每帧 而是每秒 Vector3.Lerp(from , to , 0.75f * Time.deltaTime).  如果是 light.intensity = Mathf.Lerp(light.intensity , 8f , 0.5f),

     light.intensity 初始值为0 , 然后 4 ,6 ,7 ,7.5 趋近与 8 ,变化速率 会逐渐变慢 。

     如果要让一个值 平滑进行 变化通常 最好 使用 SmoothDamp 函数 。 当你确定 Lerp能达到效果才使用 。

    3.1  有关于线性代数 

         向量和缩放  Unity 中 , 是通过 向量移动 2D 和 3D 物体 ,且都是通过操作Transform 完成 。 保存 了position ,rotation ,Scale。

        添加向量 和力 。 在unity里面你可以为刚体创建一个力,例如,模拟一个或几个力的合力到刚体上。因为力可以用向量表示,可以添加一些力量,通过计算合力并把它应用到具有刚体组件的游戏对象上。

         向量乘以标量  。在unity中,你可以使对象向前移动一段距离。但是,当向前移动时,你可能需要设定一个速度。unity提供了一个内置的向量“transform.forward”(向前),所以我们可以把这个向量乘以一个标量(数字)去指定对象能够前进多少距离。这是因为向量“forward”默认大小为1(也称为一个单位向量)。如一开始所说,我们的速度是基于向量,而且大小为1(1米/秒)和方向向前。此,为了增加速度大小并保持同一方向,我们可以将这个方向为“forward”的向量乘以一个数。

         旋转  。有时候你需要可在你的脚本旋转一个游戏对象,你可以这样使用四元数和欧拉角。旋转一个对象,通常使用的语法:“transform.rotation=Quaternion.Eular(x,y,z);”这句话的意思是我们沿着x轴旋转x度,沿着Y轴旋转y度,沿着 z轴旋转z度。

    简而言之,这些语句可以指定旋转轴以及角度。我们使用前面的例子,并在“start”中添加一个旋转。

          点积  点积能够真实地告诉我们关于这些向量之间的角度关系,例如,点积为正表明两个向量之间的角度是-90度和90度之间,点积为零表明他们是互相垂直的。在unity中,内置的Vector3类使我们更容易使用点积,点积也可以用来判断向量是否一致或指向相同的方向,如果我们一开始就求出单位向量(即归一化向量。大小减少到1)。因此,如果两个向量在完全相同的方向,点积将为1;如果他们是相反的方向,点积将为-1。这是因为当我们计算点积时,如果两个向量的大小是1,点积将等于这两个之间的余弦角。当角度为0度时,余弦等于1;角度为180度时,余弦为-1,现在更容易如果这些向量是一致的。

         

    4.位移 旋转 Translate() Rotate() 

      unity 使用 欧拉角 和 四元数 都可以 设置角度 。

          

    5.LookAt()

    6. DeltaTime

    7.Destroy()

    8.Input类 GetButton() GetKey() GetAxis() OnMouseDown() 

    9.Invoke()

  • 相关阅读:
    优化网站设计(一):减少请求数
    ASP.NET MVC 计划任务(不使用外接程序,.net内部机制实现)
    ASP.NET MVC 母版页
    ASP.NET MVC 系统过滤器、自定义过滤器
    大流量网站的底层系统架构分析
    如何开发高性能低成本的网站之技术选择
    使用Sqlserver事务发布实现数据同步(sql2008)_Mssq l数据库教程
    xpath路径表达式
    减负!云端编译构建,这样让你的开发省时省力……
    SVN如何迁移到Git?
  • 原文地址:https://www.cnblogs.com/bambomtan/p/4769560.html
Copyright © 2011-2022 走看看