unity常用API(三)

个人英语不好,所以看的是2018.1 的中文API 部分代码和解释都来源于此文档:原文链接

视频链接:点击链接

[TOC]

Quaernion(四元数)

  1. eulerAngles: 把四元数转换为欧拉角(常用)

      cube.eulerAngles = new Vetor3(45,45,45);
  2. Euler:把欧拉角转换为四元数

     cude.rotatiion = Quaternion.Euler(new Vector(45,45,45));
  3. LookRotation:会使物体旋转到目标方向(望向目标)

     void Start()
     {
         Vector3 dir = enemy.position - player.position;
         dir.y = 0; // 忽略高度差
         player.rotation = Quaternion.LookRotation(dir);
     }

    如图所示:
    85666e.gif

     // 更加平滑 
         Quaternion target = Quaternion.LookRotation(dir);
     player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime);

Rigidbody

  1. postion : 刚体的位置。
  2. MovePosition : 将刚体移动到 /position/。
     void Update()
     {
         playerRgd.MovePosition(playerRgd.position + Vector3.forward * Time.deltaTime);
     }
  3. rotation : 刚体的旋转。
  4. MoveRotation : 将刚体旋转到 /rotation/。
  5. AddForce : 向 Rigidbody 添加力。
     void Update()
     {
         playerRgd.AddForce(Vector3.forward*force);
     }

Camera

  1. main:直接获取mainCamera
      Camera mainCamera = Camera.main
  2. ScreenPointToRay : 返回从摄像机通过屏幕点的光线。
     mainCamera =  Camera.main;
     Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
     RaycastHit hit;
     bool isColl = Physics.Raycast(ray,out hit);
     if (isColl)
     {
       Debug.Log(hit.collider);
     }

Application

  1. dataPath: 数据路径
  2. Streaming Assets: 资源文件(创建后不会被打包)
  3. identifier: 包的名字
  4. isFocused: 判断是否是焦点
  5. isMobile: 是否在移动平台
  6. isPlaying: 编辑模式下载运行会返回ture
     //在编辑器模式下退出游戏
     UnityEditor.EditorApplication.isPlaying = false;
  7. Plaatform: 可以控制在某个平台下运行
  8. identifier:标识名
  9. companyName: 公司名
  10. prodctName: 游戏名字
  11. runlnBackGround: 是否在后台运行
  12. unityVersion: 判断unity的版本
  13. OpenURL: 可以打开页面

sceneManager

  1. LoadScene : 按照 Build Settings 中的名称或索引加载场景。

      SceneManager.LoadScene(sceneName);
  2. activeSceneChanged : 订阅此事件可在活动场景发生变化时收到通知。

  3. sceneLoaded : 向此事件添加委托,以在加载场景时收到通知。

  4. LoadSceneAsync : 在后台异步加载场景。

  5. sceneCount : 当前加载的场景总数。

  6. GetSceneAt : 获取 SceneManager 的已加载场景列表中索引处的场景。

       public class API17Scenes : MonoBehaviour
       {
           // Start is called before the first frame update
           void Start()
           {
               print(SceneManager.sceneCount);
               print(SceneManager.sceneCount);
               print(SceneManager.sceneCountInBuildSettings);
    
               print(SceneManager.GetActiveScene().name);
               print(SceneManager.GetSceneAt(0).name);
    
               SceneManager.activeSceneChanged += OnActiveSceneChanged;
               SceneManager.sceneLoaded += OnSceneLoaded;
           }
           void OnActiveSceneChanged(Scene a,Scene b)
           {
               print(a.name);
               print(b.name);
           }
           void OnSceneLoaded(Scene a, LoadSceneMode mode)
           {
               print(a.name + "" + mode);
           }
    
           // Update is called once per frame
           void Update()
           {
    
               if (Input.GetKeyDown(KeyCode.Space))
               {
                  // print(SceneManager.GetSceneByName("MenuScene").buildIndex );
                   SceneManager.LoadScene("MenuScene");
               }
           }
       }