今日学习记录
UnityEngine.SceneManagement
- LoadScene :加载/切换场景
场景较为简单时使用,由主线程进行加载,如果场景较为复杂,将会出现应用程序未响应的情况。 - LoadSceneAsync :异步加载/切换场景(有返回值,AsyncOperation类)
场景比较复杂时使用,主线程只负责最重要的事情,场景的加载由子线程完成。
返回值有如下几个较为重要的属性:
(1) allowSceneActivation :是否立刻显示加载的场景
(2) progress :加载进度条
(3) IsDown :是否已完成
Application类
- runInBackground :是否支持后台运行
- OpenURL : 打开网页
- Quit : 退出(在unity中运行无效,打包后在安卓,PC端等有效)
2D精灵Sprite
SpriteRenderer :
(1)Sprite:精灵图片
(2)Color:精灵颜色
(3)Flip:反转轴
(4)Material:材质
(5)SortingLayer:精灵层
(6)Order In Layer:同层序号
画布的第二种模式(Screen Space - Camera)的坐标转换的相关问题
注意:要放入每帧都执行的函数中如Update,OnDrag,不能直接放入类中
第一种方法:将屏幕坐标转换为UI中的世界坐标
Vector3 translatedPosition = Vector3.zero;
RectTransformUtility.ScreenPointToWorldPointInRectangle(
transform.root as RectTransform, //画布的RectTransform
Input.mousePosition, //鼠标的坐标
Camera.main, //画布选择的渲染摄像机,第一种模式OverLay中该属性为null
out translatedPosition //输出结果);
transform.position = translatedPosition; //设置转换后的世界坐标
第二种方法:将屏幕坐标转换为UI中的本地坐标
Vector2 translatePosition2 = Vector2.zero;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
transform.parent as RectTransform, //父对象的RectTransform
Input.mousePosition, //鼠标的坐标
Camera.main, //画布选择的渲染摄像机,第一种模式OverLay中该属性为null
out translatePosition2); // 输出结果
transform.localPosition = translatePosition2; //设置转换后的本地坐标
单例类和单例脚本
- 单例类:存储跨场景信息,不受切换场景影响,不会因切换场景而销毁。
- 单例脚本:可以快速使用MonoBehaviour的方法,属性。但一个场景中只能存在一个单例脚本,且切换场景时会被销毁。(通过DontDestroyOnLoad(gameObject)可以阻止销毁)
实现方法:
public class 类名 : MonoBehaviour
{
public static 类名 instance ;
private void Awake()
{
instance = this;
}
}