//#pragma strict
//
一、声明变量
//var a : int = 1; //整型
//
//var b : float = 0.05; //浮点
//
//var c : GameObject; //游戏物体
//
//var c2 : Rigidbody; //刚体
//
//var c3 : Collider; //碰撞
//
//var c4 : Transform; //位置
//
//var c5 : Renderer; //渲染器
//
//var c6 : Material; //材质
//
//var d : Color; //颜色
//
//var e : Texture; //贴图
//
//var e1 : Texture2D //2D贴图
//
//var f : String = "XXX" //字符
//
//var bool : boolean = true / false; //布林值1、条件判断2、开关3、对错 默认是false
//
//var tiewu : GUITexture //贴纸(瞄准镜)
//
//var aa : MovieTexture; //视频
//
//private var g : float = 0.1;
// //私有(unity中不显示数值)
//public var h : float = 0.1;
// //公开(unity中显示数值,与var开头一样)
//static var i : float = 0.1;
// //静态(在其他脚本中可以使用 方法:脚本名。i 提取)
//
//GameObject.Find("cube") //直接指定某物体
//
//gameObject.GetComponent.<组件名称>();(使用已有的组件)
//
//gameObject.AddComponent.<添加的组件名称>(); (增加一个没有的组件)
//
*************************************************************************************************
二、函式
//function Awake () {
//} //只运行一次
//
//function Start () {
//} //只运行一次
//
//function Update () {
//} //一直运行
//
//function OnMouseDown(){
//} //按下鼠标左键执行(脚本放在谁身上,点谁才管用)
//
//function OnMouseUp(){
//} //松开鼠标左键执行
//
*************************************************************************************************
//
三、碰撞测试
//function OnTriggerEnter (other : Collider) {
//} //接触
//
//function OnTriggerStay (other : Collider) {
//} //穿过中
//
//function OnTriggerExit (other : Collider) {
//} //穿过后
//
*************************************************************************************************
四、如果语句
//if (transform.position.x >= 10 ){
//
//} //如果(条件)
//
//if (transform.position.x >= 10 && transform.position.y <= 5){
//
//} //如果(条件① && 条件②)两个条件都必须满足
//
//if (transform.position.x >= 10 || transform.position.y <= 5){
//
//} //如果(条件① || 条件②)两个条件只需要满足一个
//
//
//else if(条件③){
//
//} //如果if语句条件未满足,满足else if语句条件就执行
//
//else
//{
//
//} //如果条件不成立执行这一个
//
//
*************************************************************************************************
五、移动
// transform.position.x += 0.05;
//
// transform.position += Vector3(0.05,0,0);
//
// transform.position += Vector3.right*0.05;
//
// transform.Translate(0.05,0,0);
//
// transform.Translate(Vector3(0.05,0,0));
//
// transform.Translate(Vector3.right*0.05);
//
// transform.Translate(Vector3(0.05,0,0),Space.World);
//
// transform.Translate(Vector3.right*0.05,Space.Self);
//
// transform.Translate(Vector3((Time.deltaTime),0,0));
//
// transform.Translate(Vector3.right*Time.deltaTime);
//
*************************************************************************************************
六、旋转
//1:旋转到指定角度
//gameObject.transform.eulerAngles = Vector3(90, 0, 0);
//
//2:一直转动
// transform.Rotate(Vector3(0.05,0,0));
//
// transform.Rotate(0.05,0,0);
//
// transform.Rotate(Vector3.right*0.05);
//
// transform.Rotate(Vector3(0.05,0,0),Space.World);
//
// transform.Rotate(Vector3.right*0.05,Space.Self);
//
// transform.Rotate(Vector3((Time.deltaTime),0,0));
//
// transform.Rotate(Vector3.right*Time.deltaTime);
//
*************************************************************************************************
七、颜色
// renderer.material.color = Color.red;
//
// renderer.material.color = Color(1,0,0,0);
//
// renderer,material.color = d;
//
*************************************************************************************************
八、贴图
// renderer.material.mainTexture = e;
//}
//
*************************************************************************************************
//
九、控制器
//if(Input.GetKey(KeyCode.W)){
//
//} //“W”大写
//
//if(Input.GetKey("w")){
//
//} //“w”小写
//
//if(Input.GetKeyDown(KeyCode.W)){
//
//} //按下按钮后执行
//
//if(Input.GetKeyUp(KeyCode.W)){
//
//} //松开按钮后执行
*************************************************************************************************
//
十、物体消失
//Destroy(gameObject,5) //“5”为时间
//Destroy(gameObject) //第二种写法(两种写法都不能写在Update函式下)
*************************************************************************************************
//
十一、映出字符
//Print("abc"); //引号内字符原样映出
//Print(abc); //映出括号内字符所代表的数据
//
*************************************************************************************************
//十二、判断
//{==判断是否等于
// !=不等于
// =等于
//}
//
*************************************************************************************************
十三、生成预置物
//GameObject.Instantiate(预置物,坐标,角度);
//例1:子弹的生成
//var zidan : Rigidbody; (预置物子弹必须是刚体)
//var weizhi : Transform; (用空物体来确定位置)
//var wuti : Rigidbody; (生成物(发射出的子弹)对应的也是刚体)
//function Update () {
//
// if (Input.GetMouseButtonDown(0)){ (按下鼠标左键,Down是按下只触发一次)
// wuti = GameObject.Instantiate(zidan,weizhi.position,weizhi.rotation);(固定格式,生成物=生成物体(他的预置物,坐标,角度))
// wuti.velocity = weizhi.forward * 50;(生成物体的速度 = 空物体的前进方向×50)
// Destroy(wuti.gameObject,5) ; (消失(生成物的物体,时间)表示生成的子弹5秒后消失)
// }
//}
//例2:汽油桶爆炸生成爆炸效果
//var baozha : GameObject; (指定爆炸效果的预置物)
//var youtong : Transform; (指定要爆炸的油桶)
//
//function OnTriggerStay (other : Collider) { (碰撞函式(碰撞后发生以下结果))
// if(other.tag == "zidan"){ (要想油桶之碰到子弹爆炸需要建立新标签(如zidan),然后将预置物子弹的标签设置为zidan)
// var shengchengwu: GameObject = GameObject.Instantiate(baozha,youtong.position,youtong.rotation);(爆炸效果=复制物体(他的预置物,坐标,角度))
// gameObject.renderer.enabled = false; (游戏物体的渲染器的开关=关)
// gameObject.collider.enabled = false; (游戏物体的碰撞机的开关=关)
// Destroy(gameObject,2); (消失(本体,时间))
// Destroy(other); (消失(碰撞他的物体))
// }
//}
//**************************************************************************************************
//十四、切换狙击模式
//1、计算屏幕的宽高比例为aa
//①鼠标右键控制是否狙击
//②如果是狙击模式 判断屏幕宽高的比例
// <1.5 选择图片4:3 {4:3的图片.gameObject.active = true;
16:9的图片.gameObject.active = false;
4:3的图片.PixelInset.width = 屏幕宽
如果比值aa{ 4:3的图片.PixelInset.height = 屏幕高
// >1.5 选择图片16:9{16:9的图片.gameObject.active = true;
4:3的图片.gameObject.active = false;
16:9的图片.PixelInset.width = 屏幕宽
16:9的图片.PixelInset.height = 屏幕高
//将相机FieldOfView值调整为10
//③如果不是狙击模式,让两个图片的active都为false。将相机的FiedOfView重新调整为原来的60。
//
//指令写法:
//
//var juji169 : GUITexture; 指定16:9贴纸
//var juji43 : GUITexture; 指定4:3贴纸
//var kaijing : boolean; 设置开关镜为布林值
//
//function Update () {
// if(Input.GetMouseButtonDown(1)){ 按下鼠标右键
// kaijing = !kaijing; 开关镜对调一次(如开镜变为关镜,关镜变为开镜)
// var screen : float = Screen.width*1.0/Screen.height; 指定屏幕宽高比的变量为screen
// if(kaijing == true){ 当开关镜为开时
// if(screen < 1.5){ 如果屏幕宽高比小于1.5
// juji43.gameObject.active = true; 4:3贴纸的开关为开
// juji169.gameObject.active = false; 16:9贴纸的开关为关
// juji43.pixelInset.width = Screen.width; 4:3贴纸的宽为屏幕的宽
// juji43.pixelInset.height = Screen.height; 4:3贴纸的高为屏幕的高
//
// }
// else if (screen > 1.5) { 当屏幕的宽高比大于1.5时
// juji169.gameObject.active = true; 16:9贴纸的开关为开
// juji43.gameObject.active = false; 4:3贴纸的开关为关
// juji169.pixelInset.width = Screen.width; 16;9贴纸的宽为屏幕的宽
// juji169.pixelInset.height = Screen.height; 16:9贴纸的高为屏幕的高
// }
// gameObject.camera.fieldOfView = 10; 摄像机看到的距离为10
// }
// else 当开关镜为关时
// {
// juji169.gameObject.active = false; 16;9贴纸的开关为关
// juji43.gameObject.active = false; 4:3贴纸的开关为关
// gameObject.camera.fieldOfView = 60; 摄像机看到的距离为60
// }
// }
//}
//**************************************************************************************************
//十五、自动寻路
//①布置场景。所有的物体√Static(除摄像机、灯光、运动的物体)
//②在运动的物体上添加组件Navigation,添加脚本(见下面)
//③添加组件 OffMeshlink(可添加到任何物体上)
// └ Start 球A}
// └ End 球B} 让两者用线连起来
//脚本写法
//var Target : Transform;
//
//function Update () {
// gameObject.GetComponent.().SetDestination(Target.position);
//}
//**************************************************************************************************
//十六、开关门(动画)
//①建立房子(门)创建父子集
//②在门上创建开门与关门的动画(ctrl+6)
//③将门上的动画关掉(Play Automatically的勾去掉)
//④创建一个方块删去renderer(或者创建一个空物体添加collider)放到门前合适的位置(碰到该物体就开门,离开就关门)
//⑤在“④”的物体上创建脚本:
//var men : Animation; 指定门上的动画
//function OnTriggerEnter (other : Collider){ 当接触到其他物体时
// if(other.tag == "ren"){ 如果接触的其他物体的标签为“ren”时
// men.Play("kaimen"); 门的动画播放“kaimen”动画
// }
//}
//function OnTriggerExit (other : Collider){ 当离开接触的物体时
// if(other.tag == "ren"){ 如果接触的其他物体的标签为“ren”时
// men.Play("guanmen"); 门的动画播放“guanmen”动画
// }
//}
//**************************************************************************************************
//十七、房子爆炸
//①利用“十六”中建立的房子,在父集中添加一个collider,大小与房子大小一样
//②在添加了collider的父集上添加脚本:
//var zhadan : GameObject; 指定爆炸效果的预置物
//var myarray : Transform[] = new Transform[9]; 指定父子集
//
//function OnTriggerEnter (other : Collider){ 碰撞函式
//
// if(other.tag == "zidan"){ 如果碰到的物体的标签是子弹时
// var zhakai : GameObject = GameObject.Instantiate(zhadan,other.transform.position,other.transform.rotation);
生成炸开效果
// myarray = GetComponentsInChildren.(); myarray中提取组件Transform
// for(var aa in myarray){ 循环某个变量添加在指定的父子集中
// aa.gameObject.AddComponent.().mass = 5; 变量添加刚体.密度是5
// aa.parent = null; 有变量的父子集拆开
// }
// Destroy(other.gameObject); 消失(碰到的物体)
// Destroy(gameObject); 消失(本身)
//
// }
//}
//**************************************************************************************************
//十八、添加声音
//①在物体上添加component→audio→audio source
//②将声音文件拖进clip
//③将play按钮的勾去掉
//④volume rolloff中选择linear rolloff
//⑤在脚本上添加:
//gameObject.audio.Play();
//**************************************************************************************************
//十九、添加影像
//①建立材质球,将影像添加到材质球中
//②在场景中建立平面,将材质球加到平面中
//③写脚本:
//var aa : MovieTexture; 指定电影为“aa”
//
//function Update () { 函式Update
// gameObject.renderer.material.mainTexture = aa; 平面的材质球为aa
// aa.Play(); aa播放
//}
//**************************************************************************************************
//二十、骷髅守卫
//①制造一个骷髅
//②脚本:效果:当骷髅离人物距离低于30时,骷髅追人,超过30时,骷髅回到初始位置
//var kulou : Animation; 指定骷髅(有动画)
//var player : GameObject; 指定人物角色
//var juli : int = 1; 指定超过30或低于30的连个变量
//private var didian : Vector3; 骷髅的初始地点
//function Start () { 函式Start
// kulou.animation["run"].wrapMode = WrapMode.Loop; 除死亡动作“die”外其他动作都执行loop(循环)
// kulou.animation["idle"].wrapMode = WrapMode.Loop;
// kulou.animation["attack"].wrapMode = WrapMode.Loop;
// kulou.animation["dance"].wrapMode = WrapMode.Loop;
// kulou.animation["die"].wrapMode = WrapMode.Once;
// didian = kulou.transform.position; 初始地点的值是骷髅的位置
//}
//
//function Update () { 函式Update
// if(juli == 1){ 如果juli是"1"时
// if(Vector3.Distance(player.transform.position,kulou.transform.position)<30){如果距离人物与骷髅位置小于30
// kulou.transform.LookAt(player.transform.position); 骷髅面向人物
// kulou.CrossFade("run"); 骷髅执行“run”动画
// kulou.transform.rotation.x = 0; 骷髅的x轴旋转为0
// kulou.transform.rotation.z = 0; 骷髅的z轴旋转为0
// kulou.transform.Translate(0,0,10*Time.deltaTime); 骷髅向z轴每帧运行10距离
// }
// else{ 不满足如果的话(指距离大于30)
// if(Vector3.Distance(kulou.transform.position,didian)>1){ 如果骷髅的距离与初始的地点大于1
// kulou.transform.LookAt(didian); 骷髅面向初始地点
// kulou.CrossFade("run"); 骷髅执行“run”动画
// kulou.transform.rotation.x = 0; 骷髅的x轴旋转为0
// kulou.transform.rotation.z = 0; 骷髅的z轴旋转为0
// kulou.transform.Translate(0,0,10*Time.deltaTime); 骷髅向z轴每帧运行10距离
// }
// else{ 不满足如果的的话(指距离小于1)
// kulou.Play("idle"); 骷髅运行“idle”动画
// }
// }
// }
// if(juli == 2){ 如果juli是“2”时
// kulou.Play("attack"); 骷髅的动画为“attack”攻击
// }
//}
//function OnTriggerEnter(other : Collider){ 当碰到其他物体时
// juli = 2; juli是2
//}
//function OnTriggerExit(other : Collider){ 当离开其他物体时
// juli = 1; juli是1
//}
//**************************************************************************************************
//二十一、重置场景(关卡)
//Application.LoadLevel(Application.loadedLevelName);
//**************************************************************************************************
//二十二、制作血条与减血加血
//①创建角色、怪物和加血道具
//②在设定好角色怪物的移动脚本(这里用的“二十”中的骷髅守卫)
//③用PS制作血条,并导入设定好位置
//④在角色中添加脚本:
//var xuetiao : GUITexture; 设定血条的贴图
//var zuidaHP : int = 1000; 设定最大血量为1000
//var dangqianHP : int; 设定当前血量为整数
//var changdu : float; 设定血条的长度
//function Start () { start函式
// changdu = xuetiao.pixelInset.width; 血条长度=血条贴图的宽
// dangqianHP = 1000; 当前血量为1000
//}
//
//function Update () { update函式
// xuetiao.pixelInset.width = dangqianHP*1.0/zuidaHP*changdu; 血条的宽是当前血量*1.0/最大血量*长度
//}
//⑤在骷髅守卫的武器中添加collide 与刚体并添加脚本:
//function OnTriggerEnter(other : Collider){ 碰撞测试
// if(other.tag == "Player"){ 碰撞物的标签为“Player”
// if(other.GetComponent.<④>().dangqianHP>0) other.GetComponent.<④>().dangqianHP -= 50;
// if(other.GetComponent.<④>().dangqianHP<=0) other.GetComponent.<④>().dangqianHP = 0;
// } 提取《④》中的dangqianHP如果大于0,就减50;
//} 如果小于等于0,就不变;
//⑥在加血道具中添加脚本:
//var xuanguang : GameObject; 指定道具眩光的预置物
//function OnTriggerEnter (other : Collider) { 碰撞函式
// if(other.tag == "Player"){ 碰撞物的标签为“Player”
// other.GetComponent.<④>().dangqianHP = 1000; 血量变成1000(满)
// GameObject.Instantiate(xuanguang,transform.position,transform.rotation);生成眩光
// Destroy(gameObject); 道具消失
// }
//}
//**************************************************************************************************
//二十三、for循环判断
//举例:
//for(var i =1 ;i<10 ; i++){ i是1,i小于10的话,满足下面的条件i就加1
// for( var j = 1 ; j<10 ; j++ ){ j是1,j小于10的话,满足下面的条件j就加1
// print(i + "*" + j +"=" + i*j) 映出i*j=结果(99乘法表)
// }
//}
//**************************************************************************************************
//二十四、指定自定义函式
//gameObject.SendMessage("__函式名字__",__参数__){} 平级,同级
//gameObject BroadcastMessage("____",____){} 向下
//gameObject SendMessage Upwards("____",____){} 向上
//**************************************************************************************************
//二十五、为怪物增加动态血条与掉血回血
//①沿用之前骷髅怪物与主角,在怪物头顶添加cube,拉伸成血条形状
//②将脚本添加到血条中:
//var shexiangji : GameObject; 指定摄像机
//var xuetiao : Texture2D; 指定血条的2D贴图
//var dangqianHP : float; 设定当前HP
//var zuidaHP : float = 1000; 设定最大的HP值
//var xue : GameObject; 指定血的预置物
//var a : int = 1;
//
//function Start () { Start函式
// xuetiao = new Texture2D(512,32); 血条是创建的新2D贴图(长和宽)
// xuetiao.wrapMode = TextureWrapMode.Clamp; 将贴图拉伸覆盖到血条
// dangqianHP = 1000; 当前的HP是1000;
//}
//
//function Update () { Update函式
// gameObject.transform.LookAt(shexiangji.transform.position);让血条一直面对摄像机(让你总能看到正面的血条)
// gameObject.transform.rotation.x = 0; 设置血条的角度不会因为怪物移动而抖动
// gameObject.transform.rotation.z = 0;
//
// dangqianHP += a*Time.deltaTime; 当前的HP每秒恢复1滴血(自动回血)
// if(dangqianHP>=1000){ 当当前HP大于或等于1000时
// a=0; 每秒恢复0滴血(回血停止)
// }
// else{ 除此之外(只小于1000时)
// a=1; 每秒恢复1滴血
// }
//
//var changdu = dangqianHP/zuidaHP * xuetiao.width; 血条长度等于当前Hp/最大HP*血条的宽
//
// for(var x=0; x= 300){
// Application.LoadLevel("youxi1");
// }
// if(GUI.Button(Rect(Screen.width/2-50,Screen.height/2,100,50),"退出")){
// Application.Quit();
// }
//**************************************************************************************************
//二十八、光照贴图、遮挡剔除
// window ——hightmapping 光照贴图
//
// window ——Occlusion culling 遮挡剔除
//**************************************************************************************************
//二十九、随机数和取整数
//Random.value; 0-1随机小数;
//Random.Range(min,max); 自定义最小数和最大数
//
//Mathf.FloorToInt(); 取靠左端最近的整数(如3.9取3,4.1取4)
//CeilToInt(); 取靠右端最近的整数(如5.1取6,7.9取8)
//RoundToInt 四舍五入(如1.4取1,1.5取2)
//**************************************************************************************************
//三十、位置检测
// if(Rect(x,x,x,x).Contains(Vector2(x,x))){ 一个2维的点进入一个区域后映出123;
// print("123");
// }
//**************************************************************************************************
//三十一、人物跟随鼠标
人物跟随鼠标移动
//
//private var moveSpeed:int=50;//相机移动速度
//
//var player:Transform;//定义一个人物的Transform
//var playerPlane:Plane;//定义一个Plane
//
//function Start()
//{
// playerPlane=Plane(player.up,player.position);//在人物所在位置,以人物的Vector3.up为法线创建一个平面
//}
//
//function Update ()
//{
// transform.position+=Vector3.right*Input.GetAxis("Mouse X")*Time.deltaTime*moveSpeed;
// 当鼠标平移时,相机随之平移(或右移或左移)
// transform.position+=Vector3.forward*Input.GetAxis("Mouse Y")*Time.deltaTime*moveSpeed;
// 当鼠标纵移时,相机随之纵移(或上移或下移)
//
// var targetposition=player.TransformPoint(Vector3(0,48.8,-30));
// transform.position=targetposition;//相机的目标位置,这两句代码的作用是让人物一直处于相机的视野下
// PlayerMove();
//
//}
//
// //将鼠标在屏幕某一位置的坐标转化为鼠标在世界空间里该位置的坐标
//function PlayerMove()
//{
// var cursorScreenPosition:Vector3=Input.mousePosition;//鼠标在屏幕上的位置
// var ray:Ray=Camera.main.ScreenPointToRay(cursorScreenPosition);
// 在鼠标所在的屏幕位置发出一条射线(暂名该射线为x射线)
// var dist:float;//定义一个float变量(该变量会在下面的代码里用到)
// playerPlane.Raycast(ray,dist);
// 人物所在平面与x射线相交(作用是得到x射线与人物所在平面相交时,x射线射出多远---即得到dist的值)
// var targetposition:Vector3=ray.GetPoint(dist);
// 在x射线这条射线上,距离起点dist处的点(该点即为鼠标在世界空间里的坐标)
// player.LookAt(targetposition) //人物随着鼠标转动
// player.position=Vector3.MoveTowards(player.position,targetposition,Time.deltaTime*2);
// 人物坐标移动到鼠标所在世界空间的坐标
//}
//**************************************************************************************************
//三十二、储存读取游戏数据
//PlayerPrefs.SetString("key",b); //储存,b为储存的数据数字或文字
//PlayerPrefs.GetString("key",b); //读取
//**************************************************************************************************
//三十三、反光渲染
//①、添加脚本FirstMouseControl.js
//#pragma strict
//class RenderCubemapWizard extends ScriptableWizard {
// var renderFromPosition : Transform;
// var cubemap : Cubemap;
//
// function OnWizardUpdate () {
// helpString = "Select transform to render from and cubemap to render into";
// isValid = (renderFromPosition != null) && (cubemap != null);
// }
//
// function OnWizardCreate () {
// // create temporary camera for rendering
// var go = new GameObject( "CubemapCamera", Camera );
// // place it on the object
// go.transform.position = renderFromPosition.position;
// go.transform.rotation = Quaternion.identity;
//
// // render into cubemap
// go.camera.RenderToCubemap( cubemap );
//
// // destroy temporary camera
// DestroyImmediate( go );
// }
//
// @MenuItem("GameObject/Render into Cubemap")
// static function RenderCubemap () {
// ScriptableWizard.DisplayWizard.(
// "Render cubemap", "Render!");
// }
//}
//②、建好cube
//③、建好cubemap Create>Cubemap
//④、在GameObject中选择 Render into Cubemap,将建好的cube和cubemap拖入
//⑤、新建材质球,拖至cube中,Shader选项选择Reflective>VertexLit,将cubemap拖入
//**************************************************************************************************