unity常用API(三)
个人英语不好,所以看的是2018.1 的中文API 部分代码和解释都来源于此文档:原文链接
视频链接:点击链接
[TOC]
Quaernion(四元数)
eulerAngles: 把四元数转换为欧拉角(常用)
cube.eulerAngles = new Vetor3(45,45,45);
Euler:把欧拉角转换为四元数
cude.rotatiion = Quaternion.Euler(new Vector(45,45,45));
LookRotation:会使物体旋转到目标方向(望向目标)
void Start() { Vector3 dir = enemy.position - player.position; dir.y = 0; // 忽略高度差 player.rotation = Quaternion.LookRotation(dir); }
如图所示:
// 更加平滑 Quaternion target = Quaternion.LookRotation(dir); player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime);
Rigidbody
- postion : 刚体的位置。
- MovePosition : 将刚体移动到 /position/。
void Update() { playerRgd.MovePosition(playerRgd.position + Vector3.forward * Time.deltaTime); }
- rotation : 刚体的旋转。
- MoveRotation : 将刚体旋转到 /rotation/。
- AddForce : 向 Rigidbody 添加力。
void Update() { playerRgd.AddForce(Vector3.forward*force); }
Camera
- main:直接获取mainCamera
Camera mainCamera = Camera.main
- 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
- dataPath: 数据路径
- Streaming Assets: 资源文件(创建后不会被打包)
- identifier: 包的名字
- isFocused: 判断是否是焦点
- isMobile: 是否在移动平台
- isPlaying: 编辑模式下载运行会返回ture
//在编辑器模式下退出游戏 UnityEditor.EditorApplication.isPlaying = false;
- Plaatform: 可以控制在某个平台下运行
- identifier:标识名
- companyName: 公司名
- prodctName: 游戏名字
- runlnBackGround: 是否在后台运行
- unityVersion: 判断unity的版本
- OpenURL: 可以打开页面
sceneManager
LoadScene : 按照 Build Settings 中的名称或索引加载场景。
SceneManager.LoadScene(sceneName);
activeSceneChanged : 订阅此事件可在活动场景发生变化时收到通知。
sceneLoaded : 向此事件添加委托,以在加载场景时收到通知。
LoadSceneAsync : 在后台异步加载场景。
sceneCount : 当前加载的场景总数。
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"); } } }