SceneManager
scenecount加载场景数量
sceneCountInBuildSettings Build里场景个数
isLoaded
name
path
rootcount
GetSceneAt
GetSceneByBuildIndex
SetActiveScene
SceneManager
scenecount加载场景数量
sceneCountInBuildSettings Build里场景个数
isLoaded
name
path
rootcount
GetSceneAt
GetSceneByBuildIndex
SetActiveScene
任务54,scene里面的事件和举例的程序没听懂。
SceneManager的其他方法
SM.sceneCount 场景总数量。
SM.sceneCountBuildSettings.在BuildSettings下
createScene.创建Scene
SM.GetActiveScene();
返回Scene.对象
可以获得Scene.buildindex
Scene.isDirty
Scene.IsLoaded
Scene.name
Scene.path
Scene.path
Scene.rootCount
SceneManager.GetRootGameObject
SM.GetSceneAt(index);
SM.SetAcitveScene设置场景。打开
SM.OnSceneChange(方法)+
SM.ONSceneChangeLoaded(方法);
已经加载过的场景。
scenccount创建当前场景数
senCountInBuldSettinng
GetAction
GetScenceAt已经加载的场景
activeSceneChange
OnnActiveSceneChanged
sceneloaded
sceneCount当前加载的场景数量
sceneInBuildSettings
CreateScene只能在Editor模式下运行
name
rootCount
isLoaded
GetRoot
GetRootGameObejct
GetSceneAt
GetActiveScene//获取当前场景
sceneCount:当前加载场景的数量;
GetActiveScene:得到当前场景的一些基本信息;
eg:SceneManger.GetActiveScence().name;
1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object a =FindObjectOfType(typeof(组件名))
Rigidbody a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数
GetComponent;只会得到在游戏物体身上的第一个检测到的组件
GetComponent;会得到物体上所有的组件
GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件
GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件
GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件
GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件
8.Public Functions
Invoke;
Public void Invoke(string methodName,float time );可延时调用方法
CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)
InvokeRepeating;重复调用方法
IsInvoking;判断方法是否正在被调用
协程:
1.返回值是IEnumerator
2.返回参数时使用yield return null/0。
3协程方法的调用:使用StartCoroutine(需要调用的协程方法的名字);
4暂停yield return new WaitForSeconds(需要暂停的时间);
例如:
IEnumerator Method(){
内容;
yied return null;
}
StartCoroutine();开启协程
StopCoroutine();关闭协程
StopAllCoroutine();
9.与鼠标相关事件函数OnMouseXXX
OnMouseDown();当鼠标按下时触发
OnMouseUp();当鼠标抬起时触发
OnMouseDrag();当鼠标已经按下但没有抬起时触发
OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发
ONMouseExit();当鼠标离开游戏物体时触发
OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。
10.Mathf里面的方法
Mathf.PI 圆周率
Mathf.Deg2Rad 将度数转变为弧度
Mathf.Rad2Deg 将弧度转成度数
Mathf.Epsilon 无限小的数
Mathf.Infinity 无限大的数
Mathf.Abs 绝对值
Mathf.Ceil 向上取整
如Mathf.Ceil(10);结果为10.
Mathf.Ceil(10.2f);结果为11.
Mathf.Ceil(-10);结果为-10.
Mathf.Ceil(-10.2f);结果为-10.
Mathf.Floor();向下取整。
Mathf.Clamp(float value,float min,flaot max); valur为自己定义的数值。如果value小于min则将value改为min,如果value大于min且小于max则value为自身值,如果value大于max则将value改为max。
Mathf.ClosesPowerOfTwo(int value);取离value最近的2的多次方
如Mathf.ClosesPowerOfTwo(3);返回4
Mathf.ClosesPowerOfTwo(7);返回8
Mathf.DeltaAngle();返回角度之间的最小夹角。如721°-360°=361°,其返回1°。
Mathf.Exp(float power);代表e的power次方
Mathf.Max(float a,float b);比较两个数中的最大值(float可换为int)
Mathf.Max(float[] value);比较数组中的最大值(float可换为int)
Mathf.Min(float a,float b);比较两个数中的最小值(float可换为int)
Mathf.Min(float[] value)比较数组中的最小值(float可换为int
Mathf.Pow(float a,float b);a的b次方。
Mathf.Sqrt();开平方根。
Mathf.Lerp(float a,float b,float t);插值运算
t为a到b之间的距离的比率,如t=0.5时,返回值为(a+b)*0.5,t为0时,返回值为a,t为1时返回值为b;
Mathf.LerpAngle();角度的差值运算
Mathf.MoveToWards(float a,float b,float t);
a初始 值,b目标值,t从a到b每帧所移动的距离。
Mathf.PingPong(float a,float b);返回值在0到b之间0为最小值,b为最大值,返回值随着a的增大在0到b之间往返。
11.Input
GetTouch()屏幕触摸
Input.anyKeyDown();按下任何键都会触发,包括鼠标。
Input.mousePosition;鼠标在键盘上的实时坐标。
12.Vector2
magnitude;返回向量的长度。根号下X的平方加Y的平方。
normalized;将长度不为一的向量在方向不变的情况下,将长度取一。不改变向量本身。
sqrMagnitude;X的平方加Y的平方不开根号,一般用于较为节省性能的比较两个向量的长度
向量是结构体,如要修改,需整体修改。如
transform.position=new vector3(3,3,3);
如想要只修改物体的X坐标,直接调用transform.position.x是错误的。需:
Vector3 pos=transform.position;
pos.x=10;
transform.position=pos;
即可。
Vector2.Equals;判断两个向量是否相等。相等返回true,不相等返回flase.
Vector2.Normalize();将向量单位化,改变向量。
Vector2.Angle();用来取得两个向量的夹角。
Vector2.Distance(Vector2 a,Vector2 b);返回a,b两个点的距离。
Vector2.Dot()点乘。
Vector2.MoveTowards(Vector2 a,Vector2 b,float c);物体从a移动到b,c是速度。
13.Vector3
Vector3.MoveTowards();作用与Vector2的相同,用于移动。
Vector3.Normalize();单位化向量。
Vector3.Project(Vector3 a,Vector3 b);返回值为a在b身上的投影。
Vector3.Reflect(Vector3 a,Vector3 b);反射向量,a为入射光,为镜子的方向,返回值为出射光
Vector3.Slerp(Vector3 a,Vector3 b,Vector3 c);插值,由a转到b,c为速度。
14.Random随机数
Random.InitState();随机数的种子,相同的种子,随机数生成序列相同。
1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object a =FindObjectOfType(typeof(组件名))
Rigidbody a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数
GetComponent;只会得到在游戏物体身上的第一个检测到的组件
GetComponent;会得到物体上所有的组件
GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件
GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件
GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件
GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件
8.Public Functions
Invoke;
Public void Invoke(string methodName,float time );可延时调用方法
CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)
InvokeRepeating;重复调用方法
IsInvoking;判断方法是否正在被调用
协程:
1.返回值是IEnumerator
2.返回参数时使用yield return null/0。
3协程方法的调用:使用StartCoroutine(需要调用的协程方法的名字);
4暂停yield return new WaitForSeconds(需要暂停的时间);
例如:
IEnumerator Method(){
内容;
yied return null;
}
StartCoroutine();开启协程
StopCoroutine();关闭协程
StopAllCoroutine();
9.与鼠标相关事件函数OnMouseXXX
OnMouseDown();当鼠标按下时触发
OnMouseUp();当鼠标抬起时触发
OnMouseDrag();当鼠标已经按下但没有抬起时触发
OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发
ONMouseExit();当鼠标离开游戏物体时触发
OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。
10.Mathf里面的方法
Mathf.PI 圆周率
Mathf.Deg2Rad 将度数转变为弧度
Mathf.Rad2Deg 将弧度转成度数
Mathf.Epsilon 无限小的数
Mathf.Infinity 无限大的数
Mathf.Abs 绝对值
Mathf.Ceil 向上取整
如Mathf.Ceil(10);结果为10.
Mathf.Ceil(10.2f);结果为11.
Mathf.Ceil(-10);结果为-10.
Mathf.Ceil(-10.2f);结果为-10.
Mathf.Floor();向下取整。
Mathf.Clamp(float value,float min,flaot max); valur为自己定义的数值。如果value小于min则将value改为min,如果value大于min且小于max则value为自身值,如果value大于max则将value改为max。
Mathf.ClosesPowerOfTwo(int value);取离value最近的2的多次方
如Mathf.ClosesPowerOfTwo(3);返回4
Mathf.ClosesPowerOfTwo(7);返回8
Mathf.DeltaAngle();返回角度之间的最小夹角。如721°-360°=361°,其返回1°。
Mathf.Exp(float power);代表e的power次方
Mathf.Max(float a,float b);比较两个数中的最大值(float可换为int)
Mathf.Max(float[] value);比较数组中的最大值(float可换为int)
Mathf.Min(float a,float b);比较两个数中的最小值(float可换为int)
Mathf.Min(float[] value)比较数组中的最小值(float可换为int
Mathf.Pow(float a,float b);a的b次方。
Mathf.Sqrt();开平方根。
Mathf.Lerp(float a,float b,float t);插值运算
t为a到b之间的距离的比率,如t=0.5时,返回值为(a+b)*0.5,t为0时,返回值为a,t为1时返回值为b;
Mathf.LerpAngle();角度的差值运算
Mathf.MoveToWards(float a,float b,float t);
a初始 值,b目标值,t从a到b每帧所移动的距离。
Mathf.PingPong(float a,float b);返回值在0到b之间0为最小值,b为最大值,返回值随着a的增大在0到b之间往返。
11.Input
GetTouch()屏幕触摸
Input.anyKeyDown();按下任何键都会触发,包括鼠标。
Input.mousePosition;鼠标在键盘上的实时坐标。
12.Vector2
magnitude;返回向量的长度。根号下X的平方加Y的平方。
normalized;将长度不为一的向量在方向不变的情况下,将长度取一。不改变向量本身。
sqrMagnitude;X的平方加Y的平方不开根号,一般用于较为节省性能的比较两个向量的长度
向量是结构体,如要修改,需整体修改。如
transform.position=new vector3(3,3,3);
如想要只修改物体的X坐标,直接调用transform.position.x是错误的。需:
Vector3 pos=transform.position;
pos.x=10;
transform.position=pos;
即可。
Vector2.Equals;判断两个向量是否相等。相等返回true,不相等返回flase.
Vector2.Normalize();将向量单位化,改变向量。
Vector2.Angle();用来取得两个向量的夹角。
Vector2.Distance(Vector2 a,Vector2 b);返回a,b两个点的距离。
Vector2.Dot()点乘。
Vector2.MoveTowards(Vector2 a,Vector2 b,float c);物体从a移动到b,c是速度。
13.Vector3
Vector3.MoveTowards();作用与Vector2的相同,用于移动。
Vector3.Normalize();单位化向量。
Vector3.Project(Vector3 a,Vector3 b);返回值为a在b身上的投影。
Vector3.Reflect(Vector3 a,Vector3 b);反射向量,a为入射光,为镜子的方向,返回值为出射光
Vector3.Slerp(Vector3 a,Vector3 b,Vector3 c);插值,由a转到b,c为速度。
14.Random随机数
Random.InitState();随机数的种子,相同的种子,随机数生成序列相同。
Random.value();随机生成从0到1的值包括0和1。
Random.State();获取随机数的状态(种子)
Random.insideUnitCircle()*x在半径为x米的圆内随机生成。返回二维向量。
Random.insideUnitSphere();*x在半径为x的球体内生成为三位向量
15.四元数与欧拉角
当物体旋转时,当其绕x轴或z轴旋转时是绕其自身x轴和z轴旋转,当其绕y轴旋转时,是绕世界坐标的y轴旋转。
Quaternion.rotation;四元数。
Quaternion.eulerAngles;将一个四元数转变成欧拉角。也可直接设置物体的旋转。
Quaternion.Euler将欧拉角转换为四元数。
Quaternion.LookRotation();将物体的朝向改为沿规定的向量,通常用来面向敌人。
Quaternion.Slerp();插值
Quaternion.Lerp();插值
16.Rigidbod刚体
Rigidbody.centerOfMass();取得物体的重心。
Rigidbody.position();可通过刚体修改物体的位置,且这种方法运行更快,推荐使用。
Rigidbody.MovePosition()控制物体平滑地运动(远距离使用)
Rigidbody.rotation();可通过刚体控制物体的旋转,且这种方法更快,推荐使用。
Rigidbody.MoveRotation();更加平滑的旋转,(长时间大角度连续旋转使用)。
Rigidbody.AddForce(a*b);施加力。a为想要物体运动大方向,为向量,b为施加在物体身上的力。
17.Camera
Camera.main();
Camera.ScreenPointToRay();射线检测;
18.Application
Application.datapath工程所在路径
Application.streamingAssetsPath可通过文件流来读取数据(不会被打包)
Application.persistentDataPath
Application.temporaryCachePath临时缓冲数据
Application.identifier标识
Application.companyName公司名
Application.productName产品名(安装完成显示的名字)
Application.installerName安装包的名字
Application.installMode安装模式
Application.isEditor用来判断是否在编辑器模式下运行。
Application.isFocused用来判断是否处于焦点
Application.isMobilePlatform用来判断当前是否处于移动平台上运行
Application.isPlaying用来判断是否正在运行(在编辑器模式下)
Application.isWebPlayer
Application.platform用来判断当前运行的环境
Application.unityVersion用来得到开发应用的版本
Application.runInBackground用来设置应用是否可以在后台运行
Application.Quit();退出(编辑器模式下无效)
Application.OpenURT();用来打开网站
Application.CaptureScreeenshot("a");取得截图a为截图的名字
19.加载场景和SceneManager的其他方法
SceneManager.LoadScene();加载方法(1,通过场景标号;2,通过场景名字;)
SceneManager.LoadScene();异步加载,可以用来设置显示加载的进度条
SceneManager.CreateScene();创建新场景(在编辑器模式下)
SceneManager.GetActionsScene();获取当前场景
SceneManager.GetSceneAt();用来获取指定的场景
SceneManager.GetSceneAtBuildIndex();用来获取指定场景(通过场景标号index)
SceneManager.activeSceneChange();当场景发生变换时(加载新的场景时)触发
SceneManager.sceneLoaded();新场景加载完成时触发
SceneManager.sceneUnloaded();当场景由1转换到2 时,1会被卸载,当a被卸载完成时触发。
System.DateTime.Now可以获取当前时间