AsyncOperation operation;// Start is called before the first frame updatevoidStart(){StartCoroutine(loadScene());}//协程方法用来异步加载场景IEnumeratorloadScene(){
operation = SceneManager.LoadSceneAsync(0);//加载完场景不要自动跳转
operation.allowSceneActivation =false;yieldreturn operation;}float timer =0;// Update is called once per framevoidUpdate(){//输出加载进度
Debug.Log(operation.progress);
timer += Time.deltaTime;if(timer >5){
operation.allowSceneActivation =true;}}}
28 transform
voidStart(){//获取位置
Debug.Log(transform.position);//在世界中的位置
Debug.Log(transform.localPosition);//相对于父物体的位置(在面板中的位置)//获取旋转
Debug.Log(transform.rotation);//相对于世界的旋转
Debug.Log(transform.localPosition);//相对于父物体的旋转
Debug.Log(transform.eulerAngles);//相对于世界的欧拉角度(返回verctor3三维向量 代表三个角度的旋转)
Debug.Log(transform.localEulerAngles);//相对于父物体的欧拉角//获取缩放
Debug.Log(transform.localScale);//相对父物体的缩放//向量
Debug.Log(transform.forward);
Debug.Log(transform.right);
Debug.Log(transform.up);//父子关系//获取父物体
transform.parent.gameObject
//获取子物体
Debug.Log(transform.childCount);//解除与子物体的父子关系
transform.DetachChildren();//获取子物体Transform trans=transform.Find("Child");
trans.GetChild(0);//获取第0个子物体//判断一个物体是不是另外一个物体的子物体bool res = trans.IsChildOf(transform);//设置为父物体
trans.SetParent(transform);}// Update is called once per framevoidUpdate(){//时时刻刻看向(0,0,0)
transform.LookAt(Vector3.zero);//旋转
transform.Rotate(Vector3.up,1);//绕某个物体旋转
transform.RotateAround(Vector3.zero,Vector3.up,1);//移动
transform.Translate(Vector3.forward *0.1f);}
voidStart(){//开启多点触摸
Input.multiTouchEnabled =true;}// Update is called once per framevoidUpdate(){//判断单点触摸if(Input.touchCount ==1){//触摸对象Touch touch = Input.touches[0];//触摸位置
Debug.Log(touch.position);//触摸阶段switch(touch.phase){case TouchPhase.Began:
Debug.Log("触摸开始");break;case TouchPhase.Moved:break;case TouchPhase.Stationary:break;case TouchPhase.Ended:break;case TouchPhase.Canceled:break;}}if(Input.touchCount ==2){Touch touch = Input.touches[0];Touch touch1 = Input.touches[1];switch(touch.phase){case TouchPhase.Began:
Debug.Log("触摸开始");break;case TouchPhase.Moved:break;case TouchPhase.Stationary:break;case TouchPhase.Ended:break;case TouchPhase.Canceled:break;}switch(touch1.phase){case TouchPhase.Began:
Debug.Log("触摸开始");break;case TouchPhase.Moved:break;case TouchPhase.Stationary:break;case TouchPhase.Ended:break;case TouchPhase.Canceled:break;}}}
34 游戏音效
publicclassAudioTest:MonoBehaviour{//AudioClip//获取两个音频publicAudioClip music;publicAudioClip se;//获取播放器组件privateAudioSource player;// Start is called before the first frame updatevoidStart(){
player =GetComponent<AudioSource>();//设定播放音频片段
player.clip = music;//循环
player.loop =true;//音量
player.volume =0.5f;//播放
player.Play();}// Update is called once per framevoidUpdate(){//按空格切换声音的播放与暂停if(Input.GetKeyDown(KeyCode.Space)){//如果当前正在播放声音if(player.isPlaying){//暂停播放
player.Pause();//停止播放//player.Stop();}else{//开始播放(解除暂停)
player.UnPause();//重头开始播放//player.Play();}}//按鼠标左键播放音效if(Input.GetMouseButtonDown(0)){
player.PlayOneShot(se);}}}
37 角色控制器
privateCharacterController player;// Start is called before the first frame updatevoidStart(){
player =GetComponent<CharacterController>();}// Update is called once per framevoidUpdate(){//水平轴float horizontal = Input.GetAxis("Horizontal");//垂直轴float vertical = Input.GetAxis("Vertical");//创建成一个方向向量Vector3 dir =newVector3(horizontal,0,vertical);//Debug.DrawRay(transform.position,dir,Color.red);//朝该方向移动
player.SimpleMove(dir*2);}
39 碰撞的触发与监听
publicclassFireTest:MonoBehaviour{//创建一个爆炸的预设体publicGameObject prefab;// Start is called before the first frame updatevoidStart(){}// Update is called once per framevoidUpdate(){}//监听发生碰撞privatevoidOnCollisionEnter(Collision collision)//colsion 是碰撞到的物体{//获取碰撞到的物体
Debug.Log(collision.gameObject.name);//创建一个爆炸物体Instantiate(prefab,transform.position,Quaternion.identity);//销毁自身Destroy(gameObject);}//持续碰撞中privatevoidOnCollisionStay(Collision collision){}//结束碰撞privatevoidOnCollisionExit(Collision collision){}}
39 触发
//触发开始privatevoidOnTriggerEnter(Collider other)//Collider进入触发的碰撞器{GameObject door = GameObject.Find("door");if(door!=null){
door.SetActive(false);}}//正在触发privatevoidOnTriggerStay(Collider other){}//触发结束privatevoidOnTriggerExit(Collider other){}
42 射线检测
voidStart(){//创建射线//1//Ray ray = new Ray(Vector3.zero,Vector3.up);}// Update is called once per framevoidUpdate(){//2if(Input.GetMouseButtonDown(0))//按下鼠标左键发射射线{Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//声明一个碰撞信息类RaycastHit hit;//碰撞检测bool res = Physics.Raycast(ray,out hit);//如果碰撞到物体了,hit就有内容了if(res ==true){
Debug.Log(hit.point);//打印碰撞坐标
transform.position = hit.point;}//多检测(返回一个数组)//RaycastHit[] hits = Physics.RaycastAll(ray, 100,1<<10);//射线是无限远,设定一个物体,只检测前十层}