在开发游戏过程中,游戏脚本可以说是至关重要。游戏对象之间任何逻辑的判断都需要通过脚本来完成。在unity中一共支持三种语言来编写脚本:javascript,C#,boo。在入门的时候建议使用javascript来编写,因为容易上手理解。但在进阶阶段,还是用C#比较好,因为C#在编程思想上更符合unity原理,执行效率更快。
unity脚本的生命周期
unity脚本从唤醒到销毁有一段完整的生命周期,粗略的介绍一下生命周期中由系统自身调用的几个方法:
function update( ) { } 正常更新,用于更新对象的逻辑。每创建一个javascript脚本时都会默认添加这个方法。此方法每帧都会由系统调用一次。
function lateupdate( ) { }推迟更新,在update( )后执行,同样为每帧调用。
function awake( ) { }脚本唤醒,系统执行的第一个方法,用于脚本的初始化,在脚本生命中只执行一次。
function fixedupdate( ) { }固定更新,点击edit——project settings——time菜单项后,右侧的inspector视图将显示时间管理器如下图
默认更新频率为0.02S
function start( ) { }此方法在 awake( )方法后,update( ) 方法之前执行且执行一次。
function ondestory( ) { }脚本销毁调用。
function onGUI( ) { }绘制界面,每一帧都调用。
用脚本来操作游戏对象
使用脚本来调用游戏对象有两种方式:将脚本绑定在游戏对象上,或者在代码中动态绑定脚本和删除脚本。任何对象都可以绑定多个脚本,每个脚本相互不干涉,各自完成各自的生命周期。
在创建游戏对象时,可以将模型预先放入hierarchy视图中,或者在代码中根据条件动态创建和删除。下联用一个例子来讲解这个:
function OnGUI()
{
if(GUILayout.Button("创建立方体",GUILayout.Height(50)))
{
//设置该模型默认为立方体
var objCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
//给此对象添加一个刚体用于整理感应
objCube.AddComponent(Rigidbody);
//设置这个游戏对象的名称
objCube.name="Cube";
//设置此模型材质的颜色
objCube.renderer.material.color = Color.blue;
//设置此模型在坐标
objCube.transform.position = new Vector3(0.0f,10.0f,0.0f);
}
if(GUILayout.Button("创建球体",GUILayout.Height(50)))
{
//设置该模型默认为球体
var objSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
//给此对象添加一个刚体用于整理感应
objSphere.AddComponent(Rigidbody);
//设置这个游戏对象的名称
objSphere.name="Sphere";
//设置此模型材质的颜色
objSphere.renderer.material.color = Color.red;
//设置此模型在坐标
objSphere.transform.position = new Vector3(0.0f,10.0f,0.0f);
}
}
运行游戏后,点击创建按钮后会出现相应的物体,因为游戏对象悬浮在空中,所以创建对象后会执行自由落体运动。
GameObject.CreatePrimitive()方法用于创建一个原始对象,参数可设定为立方体,球体等
AddComponent( )给该游戏对象添加组件
renderer.material.color =设置渲染材质活贴图
transform.position这是该游戏对象的位置