在本章中我们将学习的是Unity3D的脚本编程,Unity3d目前支持javascript,c#,Boo这三种脚本的开发!由于本人开发过C++所以就直接用C#来进行unity3d的脚本开发!在脚本开发的过程中我们很有必要来了解一下Unity对象的生命周期!
所谓的生命周期也就是说这个对象的执行顺序!只有对这个顺序能够很好的理解,才能更加便于我们的开发!因此花点时间了解下还是很有必要的哈!
using UnityEngine; using System.Collections; public class FirstScript : MonoBehaviour{ void Awake() { //这是进入后的第一个执行函数,只执行一次 } void Start() { //这是第二个执行的函数,也只执行一次,一般用于初始化的操作 } void Update() { //这是更新操作,一帧一帧的执行 } void LateUpdate() { //这个函数在Update后执行 } void FixedUpdate() { //这个函数在固定时间后执行默认为0.02 } void OnGUI() { //这是绘制函数,可以再场景中绘制一些控件什么的 } void OnDestory() { //这是销毁函数 } }首先一进入的时候是调用 void Awake()这个函数,这函数值执行一次,然后紧接着进入void Start();这函数也只执行一次,接着就进入Void Update();这个函数时一帧一桢的执行的,当Update()执行完后会马上执行voidLateUpdate();这个函数!
当然我们还有一些函数例如voidFixedUpdate();这是在固定的时间会执行一遍,还有就是OnGUI();这个函数会一直执行着,当然当我们销毁的时候会执行OnDestory()这个函数;
Ok,接着就让我们进入Unity3D脚本开发的世界吧!
1首先是创建对象
对于创建对象有两种方法可以使用,一种是通过用户的赋值来进行的,一种是直接通过代码来进行对象的创建。
这个我们在C#的文件中定义一下就可以啦!
例如:
Public GameObject obj4;
Public Texture texture;
这样在绑定这个脚本的文件的属性视图中将会出现
接下来我们要做的就是将我们需要的GameObject和对应的Texture拖入就可以使用啦!是不是想当的方便呢?呵呵。。。你也可以试试哈!
接下来我将通过代码来进行讲解!
首先和大家说下我们的目的是什么,我们通过一个按钮来创建一个cube,然后通过一个按钮来实现这个cube的旋转。Ok,直接上代码啦!
using UnityEngine; using System.Collections; public class cube : MonoBehaviour { private GameObject obj; void Awake() { } void Start(){}; void OnGUI() { if(GuiLayout.Button(“creatobj”,GuiLayout.height(50),GuiLayout.width(100))) { obj =GameObject.CreatPrimitive(PrimitiveType.Cube); } if(GulLayout.Repeat (“Rotate”,GuiLayout.Height(50),GuiLayout.width(100))) { obj.tranfrom.Rotate(Vector3.up*Time.dalteTime*30); } } void OnDestory() { }
OK,这样的操作我们就通过代码来创建了对象啦!创建了对象我们就可以做我们自己想做的事情啦!
2 获得对象
在我们的游戏开发的过程中获得当前的游戏对象是很重要的一个操作,例如当我们的主角运动的时候后面跟真的也要一起运动,这时候我们就需要获得其他的对象,然后让其跟着我们的主角一起运动,当然还有很多运用哈!这里只是简单的几个例子哈!
首先我们在游戏对象视图中创建一个cube对象名字为cube2(保证这是一个独一无二的名字哈!)
然后我们在工程视图中创建一个C#文件,并改名字为Main(在win下的快捷键是按F2就可以啦!),然后将该脚本绑定给摄像机。接下来我们双击Main文件,进行编辑脚本文件!
在这个脚本中我们主要的操作是,我们有三个按钮,第一个按钮用于获取对象,第二个按钮用于旋转对象,第三个按钮用于销毁对象!
using UnityEngine; using System.Collections; public GetObj : Monobehaviour{ Private GameObject obj; void Start() { } void OnGUI() { if(GuiLayout.Button(“GetObject”,GuiLayout.Height(40),GuiLayout.Width(100))) { obj= GameObject.Find(“cube2”); } if(GuiLayout.RepeatButton(“Rotate”),GuiLayout.height(40),GuiLayout.width(100)) { obj.tranfrom.Rotate(Vector3.up*Time.deltaTime*30); } if(GuiLayout.Button(“Destory”),GuiLayout.height(40),GuiLayout.width(100)) { Destory(obj); } } void OnDestory() { } }
Obj = GameObject.Find();这样我们就可以获得对象啦!
谢谢大家对我博客支持,你们的支持是我的动力!希望大家一起奋斗哈!