现在的位置: 首页 > 综合 > 正文

unity脚本小总结

2014年06月12日 ⁄ 综合 ⁄ 共 2875字 ⁄ 字号 评论关闭

1.使添加的游戏对象自动旋转

创建一个脚本,把这个脚本绑定到 这个cube上,然后在脚本的Update里写入:
transform.localRotation *= Quaternion.Euler(0, 30 * Time.deltaTime, 0);
或者
transform.Rotate(Vector3.forward * 10 *Time.deltaTime , Space.World);
transform.Rotate (new Vector3 (0, 0, 1) * 10*Time.deltaTime);
transform.Rotate(0, 0, 10*Time.deltaTime,Space.World);
选择其中一个即可
2.获得键盘按键反应(不同类型对应不同的写法,3下有实例)
Input.GetKeyDown("escape") //按下退出Esc
Input.GetKeyDown("1") //按下数字键
Input.GetKeyDown(KeyCode.X) //按下字母键
点击时使物体消失gameObject.renderer.enabled  =false;
//是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的  

或者定义gameobject gam1;类型,然后gam1.active = false;(javascript),与下面代码是等价的,写法不同而已
                                 gam1.setactive(false); (c#)


3.对于判断角色与多个物体之间的距离来弹出不同的窗口消息
查看下列实例
#pragma strict
var cls1:boolean=false;
var cls2:boolean=false;
var cls3:boolean=false;
var dis1:float;
var dis2:float;
var dis3:float;
var jiaose:GameObject;
var wenhao1:GameObject;  //记得编辑器拖入
var wenhao2:GameObject;
var wenhao3:GameObject;
function Start () {


}


function Update () {
//判断角色与问号的距离,放在update中实时判断
dis1=Vector3.Distance(jiaose.transform.position,wenhao1.transform.position);
dis2=Vector3.Distance(jiaose.transform.position,wenhao2.transform.position);
dis3=Vector3.Distance(jiaose.transform.position,wenhao3.transform.position);


}


function OnGUI()
 { 
       //判断角色与问号1的距离,小于2.0弹出窗口
 
         if(dis1<2.0)
              cls1=true;     
          
            if(cls1)
            {
             GUI.Window(1,Rect(200,200,150,50),windowjj,"你好吗");
             } 
          
          //判断角色与问号2的距离,小于2.0弹出窗口
          
          if(dis2<2.0)
               cls2=true;        
          
          if(cls2)
          {
             GUI.Window(1,Rect(200,200,150,50),windowjj,"你是谁");
          }
           
          if(dis3<2.0)
               cls3=true;        
          
          if(cls3)
          {
             GUI.Window(1,Rect(200,200,150,50),windowjj,"向右转");
          }
    }
   
   
   
  
  function windowjj()
{if(cls1)
    {
     GUI.Label(Rect(20,20,150,30),"Esc键消失:我很好");  
     }
     if(cls2)
    {
     GUI.Label(Rect(20,20,150,30),"1键消失:我是戴维");  
     }
      if(cls3)
    {
     GUI.Label(Rect(20,20,150,30),"X键消失:好的");  
     }
   //按下Esc键,退出窗口
   if(cls1&&Input.GetKeyDown("escape"))
    {
    cls1=false;
    }
    if(cls2&&Input.GetKeyDown("1"))
   {
    cls2=false;
   
   }
    if(cls3&&Input.GetKeyDown(KeyCode.X))
   {
    cls3=false;
   
   }
}


4.也可以使用OntriggerEnter()函数作为触发事件,前提是编辑区的mesh render的istrigger 打钩,将脚本挂上即可,消失可用ontriggerExit()函数实现即可
5.NGUI有专门的消息传递组件,通过添加Buttonmessage组件可以通过自己写函数,通过function name来调用不同的函数名,从而响应不同的名称。很好用,并且可以将所有的消息放在一个函数中,然后挂在空的游戏对象中
6.

gameObject.renderer.enabled= false;

yieldWaitForSeconds(1.5f);

gameObject.renderer.enabled= true;

通过这种方式实现物体的消失出现

7.

//换贴图,直接把这段代码加在要换贴图的模型上即可;
var textures : Texture2D[]; //声明一个数组型的图片库;
private var i : float = 0; //声明i为浮点数0;
function Update () 
{ 
   if ("这里写上发生这个事件的条件") 
   { 
      i++ //切换图片
   } 
   renderer.material.mainTexture = textures[i]; 
}

8playerpref作用很重要,可以永久存储


9.鼠标拾取代码,点击物体可显示所点击物体名称
function Update ()   
{  
    if (Input.GetMouseButton (0))   
    {  
        var ray = Camera.main.ScreenPointToRay (Input.mousePosition);  
        var hit : RaycastHit;  
        if (Physics.Raycast (ray, hit))   
        {  
            Debug.DrawLine (ray.origin, hit.point);  
            print(hit.collider.gameObject.name);  
        }  
    }  
} 

抱歉!评论已关闭.