(搬运自我在SegmentFault的博客)

这几天通过Unity官网的Unity Scripting Tutorials的视频学习Unity脚本,观看的过程中做了记录。现在,整理了一下笔记,供自己以后和其他初学者参考。

Awake和Start

  • Awake首先执行。通常用于建立组件间的引用,初始化。
  • Start在Awake之后和第一次Update之前执行,并且要求脚本enabled。只执行一次。

Updte和FixedUpdate

  • Update每帧一次,间隔不固定(受帧的处理时间影响),用于处理:

    • 非物理物体的运动
    • 获取输入
    • 定时器
  • FixedUpdate间隔固定,用于调整物理物体(刚体)。

enabled、setActive和Destroy

  • enabled控制禁用和启用一个组件。禁用GameObject的renderer可以隐藏物体,但碰撞体仍然存在。
  • setActive用于显示和隐藏一个物体。
  • Destroy用于彻底销毁一个GameObject或组件。可以加一个数值表示delay。

Translate和Rotate

使用这两个方法控制物体运动。

Translate对应position:

transform.Translate(Vector3);   // Amount in each axis to move by

Rotate对应rotation:

transform.Rotate(Vector3,   // Axis around which to rotate
float) // amount to rotate by

LookAt

transform.LookAt(target);

用于移动物体Z轴使之对准目标物体。

将其绑定到相机上可以实现运动物体的跟踪。

Lerp

用于平滑某种转变。

  • 空间移动:

      Vector3.Lerp(Vector3 from,  // 起点。通常应设为当前坐标
    Vector3 to, // 终点
    float t); // 0~1之间的值。值越大,返回值越接近终点,移动也越快。
  • 数值变换:

      Mathf.Lerp(float from, float to, float t);
  • 颜色渐变:

      Color.Lerp(Color from, Color to, float t);

GetButton、GetKey和GetAxis

GetButton和GetKey的区别:

  1. 前者参数为字符串,可以通过设置面板更改字符串和对应按键的映射。
  2. 后者的参数为KeyCode对象。

GetButton/Up/Down的区别:

  1. Up按键弹起时为true,其他时为false;
  2. 长按时GetButton每帧都返回true,而Down只有第一帧。

GetAxis(axisName)通过获取某个轴的值来了解用户的输入。

  • axisName是字符串,可以是“Horizontal”、“Vertical”。
  • 返回值为0~1之间的值。
  • 在设置中可以调节轴的参数,gravity控制返回0的速度,sensitivity控制离开0的速度。

OnMouseDown

鼠标在Collider或GUI组件上按下时调用该方法。

同类方法:

  • OnMouseDrag:按住不放
  • OnMouseEnter:进入
  • OnMouseExit:退出
  • OnMouseOver:在上面
  • OnMouseUp:释放
  • OnMouseUpAsButton:按下和释放作用于同一个对象

Instantiate

创建prefab的副本,返回对象的引用。

使用时先用代码创建GameObject的变量,然后回到编辑器界面将prefab拖入变量中。

Invoke

调用名叫method的方法:

Invoke(method, delay);

每隔time重复调用method方法:

InvokeRepeating(method, delay, time);

取消Invoke:

CancelInvoke();

取消名叫method的Invoke:

CancelInvoke(method);

Coroutine

利用了C#的yield,来实现在多次Update中执行一个行为。

开始一个Coroutine:

StartCoroutine(IEnumerator routine);

或者接受一个string参数表示方法的返回IEnumerator的方法的名字,后面跟着参数。

例:

StartCoroutine(Func(param));
StartCoroutine("Func", param);

停止一个Coroutine,用StopCoroutine。同样有两种形式。

Quaternion

用来表示旋转的类。讲了三个内容:

1)

LookRotation(Vector3 forward);

返回使物体转向forward方向的Quaternion。

2)

Slerp(Quaternion from, Quaternion to, float t);

旋转角度。相比Lerp,在中间时快,两头时慢。

3)

Quaternion.identity是一个静态变量,表示没有旋转。

Unity Scripting Tutorials 要点记录的更多相关文章

  1. iBatis & myBatis & Hibernate 要点记录

    iBatis & myBatis & Hibernate 要点记录 这三个是当前常用三大持久层框架,对其各自要点简要记录,并对其异同点进行简单比较. 1. iBatis iBatis主 ...

  2. JAVA 中LinkedHashMap要点记录

    JAVA 中LinkedHashMap要点记录 构造函数中可能出现的几个参数说明如下: 1.initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16 2.loadFactor ...

  3. Unity AssetBundle 踩坑记录

    Unity AssetBundle 踩坑记录 editor 下选择什么平台的 ab 加载 Material doesn't have a color property '_Color' UnityEd ...

  4. python学习第一课要点记录

    写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ...

  5. 编写高质量JavaScript代码的基本要点记录

    原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...

  6. Unity GC 优化要点

    参考:http://blog.csdn.net/znybn1/article/details/76464896 为啥要点?因为讲的重点. 游戏运行时来存储数据,当这些数据不再被使用时,存储这些数据的内 ...

  7. Unity Ulua1.03优化记录

    现在项目的框架是在2015年设计的,那时候Ulua还处于1.03版本,现在回头再看,Ulua已经迭代到1.25版本,中间引入带有wraper的cstolua,而后转向现有的toLua#版本. 随着版本 ...

  8. Android开发入门要点记录:四大组件

    cocos2dx跨平台开发中需要了解android开发,昨天快速的浏览了一本Android开发入门教程,因为之前也似懂非懂的写过Activity,Intent,XML文件,还有里面许多控件甚至编程思想 ...

  9. 【基因组预测】braker2基因结构注释要点记录

    目录 流程使用 问题 记录下braker2的使用要点,以备忘记. 流程使用 braker2有很多流程,根据你的数据:组装的基因组.转录组.蛋白(同源,包括近缘或远缘)选择不同流程,官网有说明: htt ...

随机推荐

  1. 解决数据标准及质量AppScan(测试)安全性问题相关方法

    1. SQL注入文件写入(需要用户验证) 解决办法:通过建立过滤器方法,对所有用户输入信息进行清理过滤.通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启 ...

  2. 学习练习 java20160507作业

    第一题 求水仙花的个数: //求水仙花数 int zongshu = 0; for(int i =100; i<=999;i++) { int bai = i/100; //求百位上面的数字 i ...

  3. 关于cookie

    CookieHelper.WriteCookie("DEPID", "theway", depid);   //先写入cookie //再读取cookie Us ...

  4. Linq把一个DataTable根据一列去除重复数据

    DataTable dt_temp = dt.AsEnumerable().Cast<DataRow>().GroupBy(p => p.Field<string>(&q ...

  5. Sco Openserver下 配置SSH服务(图解)

    Sco Openserver下 配置SSH服务 好久没玩儿Sco Unix系统了,春节过后为邮政系统的一个朋友调试系统( 装了个远程服务) ,这两天将安装过程回忆了一下,总结出来给大家分享. 本试验需 ...

  6. I/O系统,多线程、图形用户界面编程

    多线程 进程与线程区别: 进程需要分配独立的内存空间:线程在同一内存空间中工作,可以共享同一块内存和系统资源 与Java相关的API: 1)Thread类 方法:start()启动: urn() : ...

  7. 4种kill某个用户所有进程的方法

    在linux系统管理中,我们有时候需要kill掉某个用户的所有进程,初学者一般先查询出用户的所有pid,然后一条条kill掉,或者写好一个脚本,实际上方法都有现成的,这边有4种方法,我们以kill用户 ...

  8. ArrayList总结

    ArrayList 1.extends AbstractList 实现List<E>->Collection<e>->Iterable,RandomAccess,S ...

  9. svn不能提交 svn: is out of date; try updating

    今天做项目合并的时候突然不能提交了,开始以为是和服务器的有修改冲突,然后更新一下发现还是不能提交,每次都报is out of date;还原文件 -> 修改 -> 提交 -> 仍然报 ...

  10. 仿AS语法来写HTML5—第1章,显示一张图片

    最近开始学习html5,因为一直都是研究as,所以还是觉得as顺眼一点,但是html5也不能不学,于是就想出了,可以把html5用as的语法来写出来,做游戏应该来的比较顺手一些,下面开始第一篇 第一篇 ...