标签:
脚本生命周期:
脚本创建对象:GameObject.CreatePrimitive(类型),类型是PrimitiveType.
获取对象:
给对象添加组件(脚本):
克隆游戏对象:
Instantiate("要克隆对象‘,位置,转动角度),
销毁对象:
Destroy("对象",延迟几秒); 也可以删除组件如:Destroy(对象.getComponent("组件名"));删除后引发OnDestroy()事件
控制游戏对象变换:Transform
任何一个游戏对象在创建时都会附带一个Transform(变换)组件,而且无法删除。该组件常用方法有:
位置:Transform.Position 值:Vector3
旋转:Transform.Rotation
X轴转:Vector3.right Y轴转:Vector3.up Z轴转:vector.forward
绕某点转:RotateAround(点位置Vector3类型,角度:也是X,Y,Z三个方向);
缩放:Transform.localScale, 值:Vector3(X,Y,Z), 三个方向系数
JS和C#方法互调:
取得组件:cs = obj.GetComponent("组件名");,cs.方法();
工具类:时间,等待,随机,数学,四元数
时间:Time,主要用来获取当前的系统时间
等待:WaitForSeconds(秒数),使游戏主线程进入等待状态,返回值为IEnumerator类型,
调用方式
yield return new WaitForSeconds(时间)
随机数:Random.Range(最小值,最大值);
数学:Mathf
光源:点光源PointLight,聚光灯Spotlight,平行光DirectionalLight
摄像机:
放射观察,垂直观察,代码中设置这两种观察方式:取得摄象机,然后摄像机.isOrthoGraphic = ture| false,对应垂直与放射,
切换摄像机:摄像机.action = true|false,开|关
物理引擎:刚体,力,碰撞与休眼,磁撞器,角色控制器,射线,关节,粒子,
刚体:Rigidbody
力:
碰撞与休眠:一旦刚体移动,就可以在系统方法中监听刚体的碰撞事件,有三种事件处理函数。
体眠:就是让物体进入静态状态,比如我们可以在结束事件里写上l.gameObject.rigidbody.Sleep();
碰撞器:当刚体添加碰撞器后,相互会反弹,反弹力度由物理材质决定的,添加碰撞器,选择游戏对象->Component->Physics
物理材质
物理材质可设定物体的表面材质,不同的材质可影响碰撞后的物理效果,Unity提供了物理材质包,
Import Package->Physic Materials,有5种常用,弹性(Bouncy),冰(Ice),金属(Metal),橡胶(Rubber),木头(Wood),
角色控制器:Unity已经提供了角色控制器的包,其中有第一人称与第三人称,只需要导入即可Import Package->Character Controller,导入后呵以找到First Person Controller和3rd Person Controller两个,直接拖动到游戏场景中,就可以看到相关效果,另外,也可以给别的游戏对象添加控制组件
控制组件:当我们导入角色控制器后,如果想要给别的游戏对象添加角色控制器,如何添加,只需要确定你导入角色控制器,然后选定你的游戏对象,Component->Physics->Character Controller即可,添加后需要在脚本中添加相应的处理,取得组件GetComponent<CharacterController>(),常用组件方法:移动有SimpleMove()和Move(),
射线:从某个点向一个方向发射的一条无终点的钱,一旦与其它对象碰撞,将停止发射。
//创建一个射线 Ray ray = new Ray(Vector3.zero,transform.position); //创建一个从摄像机到鼠标之间的射线 Ray ray= Camera.main.ScreenPointToRay(Imput.mousePosition); //计算射线起点与终点 RaycastHit hit; physics.RayCast(ray,out hit,100); //判断是否打中对象 if(physics.Raycast(ray,out hit)) { //打中 }
关节,粒子,布料
路径渲染:属于特效渲染组件,用于跟随运动中的游戏对象。添加:Component->Effects->Trail Renderer,
键盘事件:
// Update is called once per frame void Update () { if (Input.GetKeyDown (KeyCode.A)) { //按下A键 } if (Input.GetKeyUp (KeyCode.A)) { //抬起A键 } //长按 if (Input.GetKey (KeyCode.A)) { //记录按下的帧数 Keyframe++; } if (Input.anyKeyDown) { //任意键被按下 } if (Input.anyKey) { //任意键被长按 Keyframe++; } //鼠标事件,0左键,1右键,2中键 if (Input.GetMouseButtonDown(0)) { //鼠标当前位置 Input.mousePosition; } if (Input.GetMouseButtonUp(0)) { } //长按 if (Input.GetMouseButton(0)) { //任意键被长按 MouseFrame++; } }
自定义按钮:Edit->Project Settings->Input,对应的自定义按钮事件:Input.GetButtonDown(),Input.GetButton(),InputGetButtonUp()
按钮轴:Input.getAxis();
持久化数据-PlayerPrefs类:
//保存整型 PlayerPrefs.SetInt("test",100); PlayerPrefs.SetFloat("test",100.00f); PlayerPrefs.SetString("test","afaf"); //读取整型,参数,数据名称,默认值, int i= PlayerPrefs.GetInt("test",112); if(PlayerPrefs.HasKey("test")){ //删除所有 PlayerPrefs.DeleteAll(); //删除某项 PlayerPrefs.DeleteKey("test"); }
自定义文件-FileInfo,StreamWriter,StreamReader:
应用程序类:Application
//切换新场景 Application.loadedLevel("场景ID"); //截屏 Application.CaptureScreenshot("name.png"); //打开URL Application.OpenURL("http://www.baidu.com"); //退出应用 Application.Quit(); //当前场景名 Application.loadedLevelName;
标签:
原文地址:http://www.cnblogs.com/lqss20/p/4259469.html