脚本编辑器

本文介绍了Unity3d的脚本编辑器Mono Develop,包括C#、JavaScript、Boo三种语言的使用,强调了脚本在游戏对象中的应用和注意事项。详细讲解了项目工程分层、游戏对象的创建、销毁、克隆,以及常用核心类如GameObject、Time的使用。还涵盖了协同程序(Coroutine)的概念和Yield语句的应用,以及Random类和消息传递函数的使用。
摘要由CSDN通过智能技术生成

欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程、我们致力于打造业内unity3d培训学习第一品牌

 

Mono Develop脚本编辑器介

     Unity3d目前支持三种语言的脚本程序:C#JavaScriptBoo

 

     三种语言其实效率是相当的,最后都会编译成Unity3D内置的 中间代码。目前国内用C#的占大多数。

 

注意:

     1) 项目运行过程中的修改不会保存

     2) 脚本只能依附于游戏对象或由其他脚本调用才能运行

     3) 一个脚本可以放在多个游戏对象上面,是多个实例

     4)  一个脚本的多个实例和其他脚本之间互不干扰

 

     脚本在Project中的显示名称不要加cs,类名要和cs名称一致,所有类继承自MonoBehaviour

 

     初始化不要放在构造函数中,而是放到Start()方法中。

 

     放到游戏对象中的脚本可以在Inspector中修改属性,get/set写法属性不被识别,直接public字段就能当属性用,不写修饰符就是私有private

 

项目工程分层设计

 

     Scenes:存放场景

     Scripts:存放脚本

     Resources:资源包

     Textures:贴图

     Materials:材质

     Audios:声音

     Models:模型

 

VS编译器

 

     更改默认开发工具:

     Edit>preferences>Extemal Tools>Extemel Script Editor>D:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE>devenv.exe>关闭

 

创建,销毁,克隆游戏对象

 

     创建:GrameObject cube =GrameObject.CreatePrimitive(PrimitiveType.Cube):

           cube.name=”立方体”;//设定名字

           cube.renderer.material.color=Color.red;

 

     克隆:GrameObject obj =(GameObject)Instantiate(cube);

 

     销毁:Destroy(obj,1)//一秒后销毁

 

     1//给游戏物体添加名为FoobarScript的脚本

     GameObject.AddComponent ("FoobarScript");

 

     2//给游戏物体添加刚体

     Rigidbody  rb = GameObject.AddComponent ("Rigidbody");

    

     3//给游戏物体添加球体碰撞器

     SphereCollider  sc = GameObject.AddComponent ("SphereCollider");

 

 

常用核心类:

 

GambeObject 

 

     本类为“游戏对象”类。场景中所有的游戏对象都是通过实例化该类来生成的。

 

     1)通过名称来查找:

      GameObject  player = new GameObject("Player");

      GameObject  go=GameObject.Find(Player);

 

     2)通过tag标签获取单个游戏对象:

      GameObject  go=GameObject.FindWithTag(Player);

      GameObject go=GameObject..FindGameObjectWithTag (Player);

 

     3)通过游戏标签获取多组游戏对象:

 

      GameObject[]  go=GameObject.FindGameObjectsWithTag (Player);

 

Time

 

     属性:deltaTime

     只应该在Update()中使用deltaTime,OnGUIFiexedUpdate等里面不要用。

     例:

       //3开始向下倒计时。

       float  a=3.0f;

       void Update () {

                a-=Time.delatTime;

                print(a);

       }

 

      //按下A键,游戏物体向左移动;按下D键,游戏物体向右移动                  

               float move_h=0;

               if (Input.GetKey (KeyCode.A)) {

               move_h-=Time.deltaTime;

       }

                if (Input.GetKey (KeyCode.D)) {

                move_h+=Time.deltaTime;

       }

                transform.Translate(new Vector3(move_h,0,move_v));

 

 

 

组件引用函数

 

      如果要访问的组件不属于常用组件,或者访问的是游戏对象上的脚本(脚本属于自定义组件),可以通过组件引用函数来得到组件的引用。

      GetComponent                  得到组件

      GetComponents                得到组件列表(用于有多个同类型组件的时候)

      GetComponentInChildren    得到对象或对象子物体上的组件

 

 

      ScriptName other = GameObject.GetComponent<ScriptName>();

 

      这个操作比较耗时,把此操作放到Start()

 

协调程序(Coroutine

 

     协同程序,即在主程序运行时同时开启另一段逻辑处理来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。

     在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可开启一个协同程序,也就是说该方法必须在MonoBehaviour或继承于MonoBehaviour的类中调用。

 

     使用StartCoroutine(string methodName)可以开启一个线程

 

Yield

 

     Yield语句是一种特殊类型的Return(返回)语句,它可以确保函数在下一次被执行时,不是从头开始,而是从Yield语句处开始。

 

     可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行

 

例:

     void Start () {

          print("Start开始");

          StartCoroutine(Do());

          print("Do调用后");

     }

 

      IEnumerator Do(){

          print("Do开始");

          yield return WaitForSeconds(3.0f);

          print("暂停3秒后");

      }

     输出的语句为:

      Start开始

      Do开始

      Do调用后

     (3秒之后)暂停3秒后

 

 

Random(随机数)

 

     float a=Random.value;

 

     int b=Random.Range(0,100)    包括最大和最小

     float c=Random.Range(0.0f,1.0f);   包括最小但不包括最大

 

消息传递函数

 

     GameObject.SendMessage:向自身的脚本中发送消息

     GameObject.BroadcastMessage:向自身及子物体的脚本中发送消息

     GameObject.SendMessageUpwards:向自身及父物体中发送消息

 

 更多精彩情关注:http://www.gopedu.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值