第17-Unity脚本程序基础[13页]
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DontDestroyOnLoad():当进入其他场景时,保证游戏对象仍 然不被释放,此时需要绑定此脚本。也就是说绑定这个事件脚 本的游戏对象在下一个场景中依然存在。
OnDisable():物体被销毁时调用此事件。脚本被卸载时,将调 用OnDisable事件,而脚本被载入时将调用OnEnable事件。
Unity脚本程序基础
什么是脚本程序
在Unity中,游戏中的交互效果需要通过脚本程 序来实现。脚本是一段指令代码集,或者说是 一段程序,在Unity中以组件形式存在,可以附 加在游戏对象上以用于定义游戏对象的各种交 互操作及其他功能。通过脚本程序,开发者可 以控制每一个游戏对象的创建、销毁以及对象 在各种情况下的行为,以实现游戏功能控制和 预期的交互效果。
MonoBehaviour:CubeTest类继承自MonoBehaviour,查 看UnityAPI可以看按到这个说明:“MonoBehaviour is the base class every script derives from” 。即Unity中的脚本 都是继承自MonoBehaviour,它定义了基本的脚本行为, 用户编写的所有的脚本类均需要从MonoBehaviour直接或 者间接地继承。
FixedUpdate():每一帧都调用此事件。当处理Rigdibody 时FixedUpdate应该代替Update方法,比如,当一个物体 需要增加一个力时,应该将这个力的代码写在 FixedUpdate()里面。FixedUpdate更适用于物理引擎的计 算,因为它跟每帧渲染有关。而Update就更适合做控制。
将脚本赋予游戏对象
按住鼠标左键将脚本文件拖放到Hierarchy视 图上的游戏对象上,也可以拖放到场景中的 游戏对象上。实际上,脚本所做的工作就是 对游戏对象的component的属性进行添加、 删除、停用、读写等,尽管脚本自身也是一 个Component。
编辑脚本程序
双击脚本,Unity自动打开了MonoDevelop编辑器可以 编辑脚本程序。脚本中默认自动创建了两个事件函数, Start和Update。
在Project视图中双击脚本文件,Unity会自动启动设置 的脚本编辑器用于编辑脚本。
需要注意的是:脚本本身是依附于游戏对象的,无论 是作用在一个具体的场景物体还是管理着批量的物体, 脚本首先必须依附于游戏对象或者其他游戏脚本的调 用才会运行。当然一个脚本可以附加给多个游戏对象, 这其实是生成脚本的多个实例。对于脚本来说,脚本 的多个实例之间是互不干扰的。
LateUpdate():每一帧都调用此事件。当Update全部执行完后, 此方法开始被调用。比如用于当摄像机跟随游戏对象移动时, 摄像机的处理应该在LateUpdate()里。
OnGUI():在渲染和处理GUI事件时调用。如果用户要画一个 button或label,就需要用到它。但是如果MonoBehaviour的 enabled属性设置为false,OnGUI()就不起作用。
Awake():脚本被加载后立即调用Awake事件,通常在Start()开 始之前声明某些变量或者游戏的状态标记时使用。Awake和 Start一样,在MonoBehaviour声明周期内仅被调用一次。 Awake是在所有对象实例化之后被调用的,因此绑定这个脚本 的对象能和其他对象相互作用。
Update():正常帧更新,用于更新逻辑。述是:Update is called once per frame,可知游戏的每一帧都在调用此事 件。当处理Rigidbody时,需要用FixedUpdate代替Update。
Unity脚本编辑器
Unity支持三种语言来编写脚本, JavaScript、C#。两种语言开发的效率 其实差异不是很大,用户可以使用一种 或者同时使用多种语言来实现脚本的开 发,最后都会编译成Unity的内置中间代 码。
Unity脚本的创建与编辑
要想创建游戏脚本,通常会在Assets文件夹下创建 一个Script文件夹。选中该文件夹,新创建的脚本将 会默认保存在该文件夹中。如果用户没有指定脚本 的保存位置,新创建的脚本文件会自动保存在 Project视图的根目录
Start和Update是系统预定义的事件函数,当预定义事 件发生时系统会自动调用对应的脚本,这样的事件函 数被称为必然事件(Certain Events)。在脚本中用户可 以添加其他函数或一些特殊函数,当满足特定条件时 由系统自动调用。常用的事件函数有: Awake,Start, Update,FixUpdate,OnGUI。
Update和Start事件:从脚本中首先可以看到代码中自带的 两个事件(方法),其中Update:每帧调用一次,Start则 在第一次Update执行前调用,并且Start只执行一次。
类名CubeScriptTest:即自动添加的类名与文件名同名, 这个规则必须要遵守,因为只有这样脚本才能被添加到游 戏对象上。
OnDestroy:当对象被被销毁时调用。OnDestroy只会在预先被 激活的游戏对象是上调用。
游戏对象和组建访问
最常用的游戏对象成员的组件访问方式是通过对 象层次进行访问,用户可以通过一个游戏对象中 的Transform组件来查找其子对象和父对象,这 就Unity里面的Transform 和 GameObject就像两 个双胞胎兄弟一样,我能找到你,你也能找到我。 其实保存游戏对象的Transform是个很好的方法, 比保存GameObject本身还要好用,因为 Transform下方法的适用频率要高,同时其方法 比GameObject多。
常用事件函数
Start() :在Update被调用之前开始调用Start事件,而且Start事 件在整个MonoBehaviour生命周期内只被调用一次。Awake和 Start不同的地方在于Start方法仅仅在脚本初始化后被调用,这 样允许你延迟加载任何代码,直到代码真正被使用时。Awake 方法总是在Start方法执行之前被调用,这样允许你初始化脚本 代码。
OnDisable():物体被销毁时调用此事件。脚本被卸载时,将调 用OnDisable事件,而脚本被载入时将调用OnEnable事件。
Unity脚本程序基础
什么是脚本程序
在Unity中,游戏中的交互效果需要通过脚本程 序来实现。脚本是一段指令代码集,或者说是 一段程序,在Unity中以组件形式存在,可以附 加在游戏对象上以用于定义游戏对象的各种交 互操作及其他功能。通过脚本程序,开发者可 以控制每一个游戏对象的创建、销毁以及对象 在各种情况下的行为,以实现游戏功能控制和 预期的交互效果。
MonoBehaviour:CubeTest类继承自MonoBehaviour,查 看UnityAPI可以看按到这个说明:“MonoBehaviour is the base class every script derives from” 。即Unity中的脚本 都是继承自MonoBehaviour,它定义了基本的脚本行为, 用户编写的所有的脚本类均需要从MonoBehaviour直接或 者间接地继承。
FixedUpdate():每一帧都调用此事件。当处理Rigdibody 时FixedUpdate应该代替Update方法,比如,当一个物体 需要增加一个力时,应该将这个力的代码写在 FixedUpdate()里面。FixedUpdate更适用于物理引擎的计 算,因为它跟每帧渲染有关。而Update就更适合做控制。
将脚本赋予游戏对象
按住鼠标左键将脚本文件拖放到Hierarchy视 图上的游戏对象上,也可以拖放到场景中的 游戏对象上。实际上,脚本所做的工作就是 对游戏对象的component的属性进行添加、 删除、停用、读写等,尽管脚本自身也是一 个Component。
编辑脚本程序
双击脚本,Unity自动打开了MonoDevelop编辑器可以 编辑脚本程序。脚本中默认自动创建了两个事件函数, Start和Update。
在Project视图中双击脚本文件,Unity会自动启动设置 的脚本编辑器用于编辑脚本。
需要注意的是:脚本本身是依附于游戏对象的,无论 是作用在一个具体的场景物体还是管理着批量的物体, 脚本首先必须依附于游戏对象或者其他游戏脚本的调 用才会运行。当然一个脚本可以附加给多个游戏对象, 这其实是生成脚本的多个实例。对于脚本来说,脚本 的多个实例之间是互不干扰的。
LateUpdate():每一帧都调用此事件。当Update全部执行完后, 此方法开始被调用。比如用于当摄像机跟随游戏对象移动时, 摄像机的处理应该在LateUpdate()里。
OnGUI():在渲染和处理GUI事件时调用。如果用户要画一个 button或label,就需要用到它。但是如果MonoBehaviour的 enabled属性设置为false,OnGUI()就不起作用。
Awake():脚本被加载后立即调用Awake事件,通常在Start()开 始之前声明某些变量或者游戏的状态标记时使用。Awake和 Start一样,在MonoBehaviour声明周期内仅被调用一次。 Awake是在所有对象实例化之后被调用的,因此绑定这个脚本 的对象能和其他对象相互作用。
Update():正常帧更新,用于更新逻辑。述是:Update is called once per frame,可知游戏的每一帧都在调用此事 件。当处理Rigidbody时,需要用FixedUpdate代替Update。
Unity脚本编辑器
Unity支持三种语言来编写脚本, JavaScript、C#。两种语言开发的效率 其实差异不是很大,用户可以使用一种 或者同时使用多种语言来实现脚本的开 发,最后都会编译成Unity的内置中间代 码。
Unity脚本的创建与编辑
要想创建游戏脚本,通常会在Assets文件夹下创建 一个Script文件夹。选中该文件夹,新创建的脚本将 会默认保存在该文件夹中。如果用户没有指定脚本 的保存位置,新创建的脚本文件会自动保存在 Project视图的根目录
Start和Update是系统预定义的事件函数,当预定义事 件发生时系统会自动调用对应的脚本,这样的事件函 数被称为必然事件(Certain Events)。在脚本中用户可 以添加其他函数或一些特殊函数,当满足特定条件时 由系统自动调用。常用的事件函数有: Awake,Start, Update,FixUpdate,OnGUI。
Update和Start事件:从脚本中首先可以看到代码中自带的 两个事件(方法),其中Update:每帧调用一次,Start则 在第一次Update执行前调用,并且Start只执行一次。
类名CubeScriptTest:即自动添加的类名与文件名同名, 这个规则必须要遵守,因为只有这样脚本才能被添加到游 戏对象上。
OnDestroy:当对象被被销毁时调用。OnDestroy只会在预先被 激活的游戏对象是上调用。
游戏对象和组建访问
最常用的游戏对象成员的组件访问方式是通过对 象层次进行访问,用户可以通过一个游戏对象中 的Transform组件来查找其子对象和父对象,这 就Unity里面的Transform 和 GameObject就像两 个双胞胎兄弟一样,我能找到你,你也能找到我。 其实保存游戏对象的Transform是个很好的方法, 比保存GameObject本身还要好用,因为 Transform下方法的适用频率要高,同时其方法 比GameObject多。
常用事件函数
Start() :在Update被调用之前开始调用Start事件,而且Start事 件在整个MonoBehaviour生命周期内只被调用一次。Awake和 Start不同的地方在于Start方法仅仅在脚本初始化后被调用,这 样允许你延迟加载任何代码,直到代码真正被使用时。Awake 方法总是在Start方法执行之前被调用,这样允许你初始化脚本 代码。