Unity 常用API
Event Function:事件函数 //即生命周期函数
Awake()
: 始终在任何 Start 函数之前(开始渲染之前)并在实例化预制件之后(一些manager脚本、网络等)调用此函数。如果游戏对象在启动期间处于非活动状态,则在激活之后才会调用 Awake。OnEnable()
: 当将物体的SetActive设置为true时就会自动调用调用该方法。Awake()
、Start()
: 都是在游戏物体初始化运行一次,但是Awake的运行顺序高于Start的,并且只要脚本中存在Awake方法,则无论是否挂载了该脚本都会执行该方法。Start()
:在游戏初始化时会执行一次,不是很紧急的初始化,一般放在Start里面来做。仅在Update函数第一次被调用前调用。Fixed Update()
: 会按固定时间差重复执行,用在力学更新效果中。执行在Update之前。Update()
: 每一帧都会运行这个方法,是用于帧更新的主要函数。LateUpdate()
: 晚于Update的运行顺序,但是FPS和Update是一样的,一般人物的移动放在Update中,而摄像机的跟进变化放到FixedUpdate中。确保两个独立。OnDisable()
: 物体被禁用时调用。OnDestory()
: 当对象被销毁或关闭游戏时调用。Reset()
: 被附加脚本时、在游戏物体的组件上按Reset时会触发该事件函数,调用 Reset 可以在脚本首次附加到对象时以及使用 ReSet 命令时初始化脚本的属性。
Attribute 属性
[serializeField]
:将私有类型和保护类型的变量可视化到面板上[System.serializedField]
:将自定义类型的变量可视化到面板上[HideIninspector]
:在面板上隐藏公共变量[Header("分组说明")]
:将公共变量进行分组[Tooltip("提示信息")]
:鼠标悬浮在该变量上时显示说明信息[Range(float min,float max)]
:通过拖动条的方式来控制范围[contexMenuItem(string 变量名,方法名())]
:停在可视化变量上时显示方法,并可以点击调用,需要是无参数无返回值的方法[contexMenu("方法名")]
:只为调试,右键选择方法执行[Multline(n)]
:将字符串设置可见的n行[TextArea(min,max)]
:添加滚动条来查看设置的文本区[DisallowMulipleComponment]
:不允许挂载多重脚本
Directory 路径
Corsor 鼠标指针
- CursorLockMode.Confined : 将光标限制在游戏窗体中
- CursorLockMode.Locked : 光标锁定到视图的中心
- CuesorLockMode.None : 无规定
- Cursor.visible : 光标可见性
- Input.mousePosition : 当前鼠标在像素坐标中的位置
Time 时间类函数
- 静态变量
- Time.time :表示从游戏开发到现在的时间,会随着游戏的暂停而停止计算。
- Time.timeSinceLevelLoad : 表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。
- Time.deltaTime : 表示从上一帧到当前帧时间,以秒为单位。【一般用来控制角色、动画的运动】
- Time.fixedTime : 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。
- Time.fixedDeltaTime : 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。
- Time.SmoothDeltaTime: 表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。
- Time.timeScale: 时间缩放,默认值为1,若设置 < 1,表示时间减慢,若设置 > 1,表示时间加快,可以用来加速和减速游戏,回放等、非常有用。如果游戏中控制运动的都是使用了Time.deltatime的话,则可以通过设置Time.timeScale= 0来暂停其运动等。
- Time.frameCount : 总帧数
- Time.realtimeSinceStartup : 表示自游戏开始后的总时间,即使暂停也会不断的增加。【一般用作性能测试】
- Time.captureFramerate : 表示设置每秒的帧率,然后不考虑真实时间。
- Time.unscaledDeltaTime : 以秒计算,完成最后一帧的时间 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
- Time.unscaledTime: 从游戏开始到现在所用的时间 不考虑timescale时候与time相同,若timescale被设置,则无效。
GameObject 游戏物体
- 创建游戏物体
- 创建空的游戏对象
new GameObejct("name");
- 创建空的游戏对象
- 实例化创建游戏对象
public static Object Instantiate (Prefab name);
//实例化一个预制件public static Object Instantiate (Prefab name,Vector3 position,Quaternion rotation,Transform parent);
//并且赋值它的位置、旋转、父物体transform
//根据Prefab或者是另外一个游戏物体来创建(克隆Colon),可以实例粒子、等其他的游戏物体,常用
通过预制体实例化还可以使用Resources.Load<GameObject>("PrefabName");
不区分大小写 - 创建基本的物体
CreatPrimitive(PrimitiveType);
- 添加组件
new GameObject(name);
name.AddComponent<组件名>();
name.AddComponent<脚本名>();
- 属性和变量
object.name
:对象的名称。GameObject.SetActive(false/true)
:通过参数的控制来设置其游戏物体的激活状态,true为激活状态,反之为取消激活状态。GameObject.activeInHierarchy
: 游戏物体是否处于激活状态,与父类有关,父类被取消激活,则子类也是取消激活的。GameObject.activeSelf
: 自身的激活状态,与父类无关,只与自身有关。GameObject.tag
: 游戏物体的tag标签,具体的由程序员自定义设置。 - 静态函数,共有方法,变量
Destroy()
:删除游戏物体,但是不会立马在unity中删除,而是会先进行回收,等确定没对象使用的时候,在进行删除DontDestroyOnLoad()
: 当加载新的场景的时候,不删除这个场景中的某个游戏物体FindObjectOfType\<T>()
:通过类型T来进行查找对象,返回的是一个对象FindObjectsOfType\<T>()
:通过类型T来进行查找对象,返回类型为Type的所有活动加载对象的列表。FindGameObjectWithTag()
:返回标记的Tag活动游戏对象。FindGameObjectsWithTag()
:返回标记的Tag活动游戏对象列表。如果没有GameObject(游戏物体)返回空数组 - 消息发送
BroadcastMessage()
:广播发送消息,则该物体上对应的方法会被调用,同时这个游戏物体上的子物体上对应的方法也会被调用的SendMessage()
:发送消息,只会对这个游戏物体中脚本上的方法发送消息
SendMessageUpwards(): 广播发送消息,但是和BroadcastMessage()是相反的,在调用自身的方法时也会向上传递,调用其父类的方法 - 查找组件
//1、返回一个对应的组件,如果有多个,则只返回第一个Cube cube = target.GetComponent\<Cube>();
//2、返回该游戏物体上所有符合条件的组件,返回一个组件数组Cube[] cc= target.GetComponents\<Cube>();
//3、返回该游戏物体上的对应组件,同时返回该游戏物体的子类上对应的组件Cube[] xx = target.GetComponentsInChildren\<Cube>();
//4、返回该游戏物体上的对应组件,同时返回该游戏物体的父类上对应的组件Cube[] yy = target.GetComponentsInParent\<Cube>();
MonoBehaviours类
- 继承的变量成员
enabled{ get; set; }
:返回该组件是否被激活或者是被禁用,可以通过该变量来进行设置isActiveAndEnabled{ get; }
:只能返回该组件是否激活的标志位,不能设置该变量,为只读的tag{ get; set; }
:该组件所对应的游戏物体的标签transform
:附加到此 GameObject 的 Transform。name{ get; set; }
:该组件所对应的游戏物体的名字 - Invoke(调用)等方法、变量
//1、在等待time的时间后调用“方法1”Invoke(方法名(),float time);
//2、返回bool值,如果方法被添加到队列中,但没有被运行则返回true,如果经过一段时间后该方法被调用了则会返回false;bool i= IsInvoking("方法1")
;
//3、 等待time时间后,会重复开始运行方法1,每秒钟运行number次。InvokeRepeating("方法1",time,number);
//4、会暂停通过Involve/InvokeRepeating的运行,但是一般来说CancelInvoke会和InvokeRepeating组合调用。参数由自己设定CancelInvoke();
- 扩充:
- 在脚本的类前添加
[ExecuteInEditMode]
:则该脚本不用按游戏运行按钮就会开始编译,只限在编辑模式里面 - 在脚本的共有变量前添加
[HideInInspector]
:则该共有变量不会在Inspector面板进行显示
- 在脚本的类前添加
- OnMousexx鼠标触发事件:
//如果是通过Collider进行触发检测的话,则要在设置中打开允许进行射线检测。OnMouseDown()
: 当鼠标按下的时候触发,按一次触发一次OnMouseDrag()
: 当鼠标按住不放的时候一直触发,是每一帧进行触发OnMouseUp()
: 当鼠标抬起的时候触发,只执行一次OnMouseEnter()
: 当鼠标进入的时候触发,进入一次触发一次OnMousetOver()
: 当鼠标在触发物体的上面时,则一直触发OnMouseExit()
: 当鼠标移出的时候触发OnMouseUpAsButton()
: 相当于是按钮的功能,当鼠标在同一个游戏物体上按下抬起的时候才会触发,按下与抬起不在同一个游戏上的话则不会进行触发。
Debug
Debug.Log("一般日志信息");
Debug.LogWarning("警告信息")
Debug.LogError("错误发生")
Coroutine 协程
[[笔记/Unity/Unity Coroutine协程|Unity Coroutine协程]]
- 定义协程
1 |
|
1 |
|
- 开启协程
StartCoroutines(方法名());
- 开启与关闭协程
开启协程:StartCoriutine(参数);
关闭协程:StopCoroutine(参数);
其中的参数要互相对应,如果传递的是方法名,则两个方法中的参数就要是方法名
如果是IEnumerator的返回值,则其中两个方法发的参数就要是IEnumerator的返回值
//1、传递方法名
private IEnumerator coroutine;
coroutine = WaitAndPrint();
StartCoroutine(coroutine);
StopCoroutine(coroutine);
//2、传递返回值
StartCoroutine(“WaitAndPrint”);
StopCoroutine(“WaitAndPrint”); - 停止所有的协程
StopAllCoroutines();
Transform 类
6.1变量
GameObject.transform.childCount:父变换具有的子项数。
eularAngles:以欧拉角表示的旋转(以度为单位)。
forward:Z轴上的位置。
right:X轴上的位置。
up:Y轴上的位置。
localEulerAngles:以欧拉角表示的相对于父变换旋转的旋转(以度为单位)。
localPosition:相对于父变换的变换位置。如果变换没有父级,则其与 Transform.position 相同。
localRotation:相对于父级变换旋转的变换旋转。
localScale:相对于父对象的变换缩放。
lossyScale:对象的全局缩放。(只读)
parent:变换的父级。更改父级将修改相对于父级的位置、缩放和旋转,但保持世界空间位置、旋转和缩放不变。
position:世界空间中的变换位置。
root:返回层级视图中最顶层的变换。(永远不返回 null;如果该变换没有父级,则返回自身。)
rotation:一个四元数,用于存储变换在世界空间中的旋转。
6.2公共函数
DetachChildren:清除所有子项的父级。
LookAt(vector3):旋转变换,使向前矢量指向 target 的当前位置。
Rotate(vector3);:使用 Transform.Rotate 以各种方式旋转游戏对象。通常以欧拉角而不是四元数提供旋转。
RotateAround(vector3 point,vector3 axis,vector3 angle);:将变换围绕穿过世界坐标中的 point 的 axis 旋转 angle 度。
SetParent(transform);:设置变换的父级。
SetPositionAndRotation:设置变换组件的世界空间位置和旋转。
Translate:根据 translation 的方向和距离移动变换。
6.3继承的成员
6.3.1变量
gameObject:此组件附加到的游戏对象。始终将组件附加到游戏对象。
tag:此游戏对象的标签。
transform:附加到此 GameObject 的 Transform。
hideFlags:该对象应该隐藏、随场景一起保存还是由用户修改?
name:对象的名称。
6.3.2公共函数
BroadcastMessage:调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。
CompareTag:此游戏对象是否使用 tag 进行了标记?
GetComponent:如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null。
GetComponentInChildren:使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件。
GetComponentInParent:返回 GameObject 或其任何父项中类型为 type 的组件。
GetComponents:返回 GameObject 中类型为 type 的所有组件。
GetComponentsInChildren:返回 GameObject 或其任何子项中类型为 type 的所有组件。
GetComponentsInParent:返回 GameObject 或其任何父项中类型为 type 的所有组件。
SendMessage:调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。
SendMessageUpwards:调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。
GetInstanceID:返回对象的实例 ID。
ToString:返回 GameObject 的名称。
Mathf 类
7.1静态变量
E:表示自然对数的底数,它由常数 e 指定。
DegtoRad:度到弧度换算常量(只读)。
RadtoDeg:弧度到度换算常量(只读)。
Epsilion:微小浮点值(只读)。
infinity:正无穷大的表示形式(只读)。
NegativeInfinity:负无穷大的表示形式(只读)。
PI:众所周知的“3.14159265358979…”值(只读)。[[杂项/圆周率π|圆周率π]]
7.2静态函数
Abs() :返回绝对值。
approximately:比较两个浮点值,如果它们相似,则返回 true。
Ceil() :向上取整的,10.1—>11//CeliTolnt用法相同。
Clamp(value,min,max) :如果value的值在min–max之间的话就返回value,
但是如果value的值小于min,则返回min,如果value的值大于max,则返回max,
一般是用在控制角色血量,当玩家的血量减少的时候,不会出现出现低于0和大于100的情况 hp= Mathf.Clamp(hp,0,100);
Clamp01:将值限制在 0 与 1 之间并返回值。用于一维柏林噪声函数。
ClosePowerOfTwo(value) :取得离value的2次方最近的值
DeltaAngle:计算两个给定角度(以度为单位给定)之间的最短差异。
DeltaAngke :取得两个角度之间的最小夹角
Floor :向下取整//FloorTolnt用法相同。
InverseLerp:计算在范围 [a, b] 内生成插值 value 的线性参数 t。
a 和 b 值定义线的起点和终点。Value 是 a 与 b 之间的位置。将 a 和 b 以及 value 减去 a 以获得 a’、b’ 和 value’。这会使 a’ 为零,使 b’ 和 value’ 减小。最后将 value’ 除以 b’。这可获得 InverseLerp 量。
可用于进度条显示。
IsPowerOfTwo:如果值是 2 的幂,则返回 true。
Lerp:在 a 与 b 之间按 t 进行线性插值。
Log:返回指定的数字以指定的底数为底的对数。
Log10:返回指定的数字的以 10 为底的对数。
Max:返回两个或更多值中的最大值。
// public static int Max (params int[] values);
Min:很明显是用来返回最小值的。
MoveTowards:将值 current 向 target 靠近。
// Mathf.MoveTowards(currStrength, maxStrength, recoveryRate * Time.deltaTime);
PerlinNoise:生成 2D 柏林噪声。
Pow(i,j) :取得i的j次方。
PingPong(t,maxValue) :类似乒乓球的来回运动,起始 值是0,通过t变量来控制值由0向maxValue移动,当t大于maxValue的时候又向0进行移动,然后就这样的来回往复运动,一般t变量用时间Time.deltatime来进行控制的。
Round:返回舍入为最近整数的 /f/。满0.5进一。
Sign(f):返回f的正负号。
Sqrt(f):返回 f 的平方根。
Input 输入
GetKey() :按键一直按着时触发。
GetKeyDown():按键被按下那一刻进行触发。
GetKeyUp() :按键被按下后抬起时触发。
GetMouseButton(0/1/2):1:左键 2:右键 3:中键 鼠标一直按着时触发。
GetMouseButtonDown():鼠标按下那一刻触发。
GetMouseButtonUp():鼠标抬起的那一刻时触发。
GetButtonDown():键盘按钮按下那一刻触发。
GetButton():键盘按钮抬起的那一刻时触发。
GetButtonUp():键盘按钮抬起的那一刻时触发。
GetAxis(“虚拟轴名”):通过按下的虚拟轴来返回-1~1之间的值,开始值是0,然后向-1/1进行渐渐的变化,有一定的加速度。一般用来控制运动的,比如是赛车的加速运动等。
GetAxisRaw() :其他的和GetAxis差不多,就是少了渐变效果,返回值只有 0 1 -1三个。
anyKeyDown{get;} :当任何按键被按下(包括鼠标按键)时返回true。
anyKey{get;} :当任何按键被按着(包括鼠标)时返回true。
mousePosition{get;} :返回鼠标在屏幕上的像素坐标,【屏幕坐标】z轴衡为0的。
Vector2:二维向量
//public Vector2 (float x, float y);
magnitude{get;} :返回向量的长度。
normalized{get;} :返回这个向量长度为1的矢量,不管这个向量多长,也是返回1的矢量,只是返回值,不对原向量的值产生影响。
Normalize() :无参数的,也是向量化,但是调用该方法会改变原向量值,使其的值被向量化 了。
ClampMagnitude() :将一个向量限制在参数中指定的长度之间。
MoveToWards() :用来做匀速的运动,由一个位置向另一个位置进行移动。
sqrMagnitude{get;} : 对求向量的的长度时不进行开平方根运算了,减少性能的损耗,一般是用来比较两个向量的长度大小的。
扩充:向量是结构体,为值类型,修改其中的变量的时候要整体进行修改,不能单独的进行单个变量的赋值修改。
Vector3:三维变量
//public Vector3 (float x, float y, float z);
Cross() :插乘运算【左手法则】,通过两个向量来获得另一个向量的方向,然后进行相关的判断。
Project() :投影运算。
Reflect() :反射运算。
Slerp() :按照角度进行插值,与lerp的按照位置信息进行插值的,一般用在炮台的旋转,使旋转的更加平滑。
Distence(a,b):返回float a和b之间的距离
Random随机数类
静态函数
InitState
:通过参数指定的种子随机化生成器的状态,然后再调用Range()产生随机数的时候会依据种子来进行生成,则每一次运行所生成的随机数都是一样的,是伪随机数。一般要生成的随机数不同,可以设置参数System.DataTime.Now.Ticks:通过时间戳来完成。Range(min,max)
:返回一个 在最小值(包括)和最大值(包括)之间的浮点型随机数(只读)。
静态变量
insideUnitFCircle
:返回一个单位圆内的随机点(只读)。insideUnitSphere
:返回单位球内的一个随机点(只读)。onUnitSphere
:返回单位球表面上的一个随机点(只读)。rotation
:返回随机旋转。rotationUniform
:返回具有一致分布的随机旋转。state
:获取或设置随机数生成器的完整内部状态。value
:返回一个在[0.0,1.0]范围内的随机值(只读)。
System.Random
构造函数
Random();
//使用默认种子值(系统时间的毫秒值)初始化 Random 类的新实例。Random(Int32);
//使用指定的种子值初始化 Random 类的新实例。- 由于Random在不给定随机种子的情况下是使用系统当前时间刻作为随机种子,所以在运行速度较快时,容易生成重复结果,此时可以使用该方法生成不会重复的随机种子:
int RandomSeed=BitConverter.ToInt32(Guid.NewGuid().ToByteArray());
。
- 由于Random在不给定随机种子的情况下是使用系统当前时间刻作为随机种子,所以在运行速度较快时,容易生成重复结果,此时可以使用该方法生成不会重复的随机种子:
方法
Next();
//每次产生一个不同的随机正整数Next(int max Value);
//产生一个比 max Value(2,147,483,647) 小的正整数Next(int min Value,int max Value);
//产生一个 minValue~maxValue 的正整数,但不包含 maxValueNextDouble();
//产生一个0.0~1.0的浮点数NextBytes(byte[]);
//用随机数填充指定字节数的数组(0-255)
Quaternion 四元数
欧拉角【eylarAngles】与面板中的值对应和四元数【rotation】之间是可以进行转换的,一般欧拉角是用来让用户可以直观的看到的,而四元数是用来控制内部的运算 的。
eulerAngles :将四元数转变为欧拉角
Euler() :将欧拉角转变为四元数
LookRotation() :让玩家通过设置四元数来进行望向敌人的旋转,将向量方向转变为四元数
slerp() :在做朝向的旋转的时候,不建议使用lerp,而是建议使用slerp,使其的旋转朝向更为平滑,更加的自然
Rigidbody:刚体组件,控制物体的移动
[[笔记/Unity/Unity 移动物体的方式|Unity 移动物体的方式]]里有一些常见的Rigidbody用法
AddForce() :添加到刚体的力。
AddExplosionForce() :应用一个力到刚体来模拟爆炸效果。
AddForceAtPosition() :在position位置应用force力。作为结果这个将在这个物体上应用一个扭矩和力。
AddRelativeForce() :添加力到刚体。相对于它的系统坐标。
AddRelativeTorque(vector3) :相对于它的局部坐标系统添加扭矩到刚体。
AddTorque(vector3) :添加扭矩到刚体。
ClosestPointOnBounds() :指定位置到该刚体附加的碰撞器的最近点。
GetPointVelocity() :刚体在世界坐标空间,worldPoint点的速度。
GetRelativePointVelocity() :相对于刚体在relativePoint点的速度。
IsSleeping() :是否正休眠
MovePosition() :移动位置,对position的优化,其中利用了插值运算,一般持续运动的则使用这个方法,不出现卡顿的现象.
MoveRotation() :移动角度,用来控制刚体的旋转,一般不建议使用rotation,比较耗性能,建议使用MoveRotation(),然后配合Quaternion,slerp()进行使用,使其更加的平滑.
ResetCenterOfMass() :重置刚体的质心。
ResetInertiaTensor() :重置惯性张量值和旋转。
Rigidbody.position: 可以通过刚体来控制运动,在控制运动方面,使用rigibody.positon比transform.porition计算要快的多,相关的物理计算也是在刚体中计算好了,但是不建议使用这个方法来持续的控制物体的运动,不平滑,控制一两次的时候还可以使用
SetDensity() :设置基于附加的碰撞器假设一个固定的密度质量。
Sleep() :强制刚体休眠。
SweepTest() :如果一个刚体碰到任何东西触发测试。
SweepTestAll() :就像Rigidbody.SweepTest,当返回的是所有碰撞信息。
WakeUp() :强制一个刚体唤醒。
Collision 碰撞体
变量
articulationBody | The ArticulationBody of the collider that your GameObject collides with (Read Only).
body:The Rigidbody or ArticulationBody of the collider that your Component collides with (Read Only).
collider:我们撞击的 Collider(只读)。
contactCount:获取此碰撞的接触点数。
contacts: 物理引擎生成的接触点。应避免使用它,因为它会产生内存垃圾。改用 GetContact 或 GetContacts。
gameObject:您正在碰撞其碰撞体的 GameObject。(只读)。
impulse:为解析此碰撞而施加于该接触对的总冲量。
relativeVelocity:这两个碰撞对象的相对线性速度(只读)。
rigidbody:我们撞击的 Rigidbody(只读)。如果我们撞击的对象未附加刚体,则这是 /null/。
transform:我们撞击的对象的 Transform(只读)。
Collider.OnCollisionEnter : 碰撞体进入碰撞范围
Collider.OnCollisionStay : 碰撞体停留
Collider.OnCollisionExit : 碰撞体脱离碰撞体
Camera 相机组件
Camera是一个设备,玩家通过它看世界。
屏幕空间点用像素定义,屏幕的左下为(0,0);右上是(PixelWidth,pixelHeight).Z的位置是以世界单位衡量的到相机的距离。
视口空间点是规范的并相对于相机的。相机的左下为(0,0);右上是(1,1);Z的位置是以世界为单位衡量的到相机的距离。
Ray ray = cameraMain.ScreenPointToRay(Input.mousePosition); //获得相机到鼠标之间的射线
RaycastHit hit; //用来存放射线检测到的游戏物体的信息的
bool temp = Physics.Raycast(ray, out hit); //进行射线检测
CalculateObliqueMatrix() :计算并返回倾斜接近水平的投影矩阵。
CopyFrom() :使这个相机的设置与其他相机相同。
Render() :手动渲染相机。
RenderToCubemap() :从这个相机渲染到一个立方贴图。
RenderWithShader() : 用shader替代渲染相机。
ResetAspect() :恢复长宽比为屏幕的长宽比。
ResetProjectionMatrix() :让投影反映正常的相机参数。
ResetReplacementShader() :从相机上移除shader替换。
ResetWorldToCameraMatrix() :在场景中让渲染位置反映相机的位置
ScreenPointToRay() :返回一条射线从摄像机通过一个屏幕点。
ScreenToViewportPoint() :从屏幕空间到视窗空间的变换位置。
ScreenToWorldPoint() :从屏幕空间到世界空间的变化位置。
SetReplacementShader() :使相机渲染用shader替换。
SetTargetBuffers() :设置相机渲染到一个或多个RenderTextures所选择的缓冲区。
ViewportPointToRay() :返回从相机出发穿过视点的一个射线。
ViewportToScreenPoint() :从视口空间到屏幕空间的变换位置。
ViewportToWorldPoint() :从视窗空间到世界空间的变换位置。
WorldToScreenPoint() :从世界空间到屏幕空间变换位置。
WorldToViewportPoint() :从世界空间到视窗空间的变换位置。
Application 程序
OpenURL("www.baidu.com")
:打开指定的网址
Application.Quit() :退出游戏的运行
CapturScreenshot(“游戏截图”) : 用来截图的,字符串为截图fileNameApplication.streamingAssetsPath
:这个属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。在Unity工程的Assets目录下起一个名为“StreamingAssets”的文件夹即可,然后用Application.streamingAssetsPath访问,这个文件夹中的资源在打包时会原封不动的打包进去,不会压缩,一般放置一些资源数据。在PC/MAC中可实现对文件的“增删改查”等操作,但在移动端是一个只读路径。
SceneManager 场景类
LoadScene() :加载下一个场景,一般是用在另一个场景不是太大的情况下
LoadSceneAsync() :异步加载下一个场景,返回AsyncOperation类型,里面包含了加载的信息,加载的进度条等等。可以让用户缓解等待加载场景的时间
sceneCount : 获得当前加载的场景个数
sceneCountInBuildSettings :在Build面板中加载的场景个数
GetActiveScene() : 获取已经加载的当前场景的信息
GetSceneAt(index) : 加载index索引的场景
当加载新的场景的时候会触发下面的事件:
activeSceneChanged :当有新场景被加载的时候就会调用这个事件
sceneLoaded :当有新场景加载完成的时候就会触发这个事件
//事件的注册时通过加方法来进行注册的:
SceneManger.activeSceneChanged+=OnAcitiveScenenChanged;
Ray 射线
//一般射线检测要在射线检测的范围内,并且被检测物体要有Collider
direction :射线的方向。
origin :射线的原点。
Ray :创建一条射线从origin开始,沿direction方向。
//public Ray (Vector3 origin, Vector3 direction);
Raycast;检测的是射线碰撞到的第一个物体,不具有穿透性
RaycastAll:返回的是RaycastHit数组,具有穿透性,可以返回检测到的多个游戏物体
RaycastHit hit; //存储射线检测到的游戏物体信息
PaycastHit hit;//hit中存放的是射线检测的碰撞信息
WWW 类
//下载 是用来在网络中下载资源的
WWW :用给定的URL创建一个WWW请求。
GetAudioClip() :从下载数据,返回一个AudioClip(只读)。
LoadImageIntoTexture() :利用一个从下载数据中的图像来替换现有Texture2D。
LoadUnityWeb() :加载新的web播放器数据文件。
GUI //现已废弃,使用unity自带UI(UGUI)
静态函数
BeginGroup:开始一个组。必须与 EndGroup 调用配对使用。//public static void BeginGroup (Rect position, string text);
EndGroup:结束组。
BeginScrollView:在 GUI 内开始一个滚动视图。//public static Vector2 BeginScrollView (Rect position, Vector2 scrollPosition, Rect viewRect);
EndScrollView:结束使用 BeginScrollView 调用开始的滚动视图。
Box在 :GUI 层上创建一个框。//public static void Box (Rect position, string text);
BringWindowToBack:将特定窗口放置到该浮动窗口的后方。
BringWindowToFront:将特定窗口放置到该浮动窗口的前方。
Button:创建一个单击按钮。当用户点击该按钮时,立即执行一些操作。//public static bool Button (Rect position, string text);
DragWindow:使窗口可被拖动。//public static void DragWindow (Rect position);
FocusControl:将键盘焦点移动到某个命名控件。
FocusWindow:使某个窗口成为激活窗口。
HorizontalScrollbar:创建一个水平滚动条。滚动条是用于滚动文档的控件。大多数情况下,您需要的可能是滚动视图。
//public static float HorizontalScrollbar (Rect position, float value, float size, float leftValue, float rightValue);
HorizontalSlider:用户可以拖动的水平滑动条,用于在最小值和最大值之间更改某值。
//public static float HorizontalSlider (Rect position, float value, float leftValue, float rightValue);
Label:在屏幕上创建一个文本或纹理标签。//public static void Label (Rect position, string text);
ModalWindow:显示一个模态窗口。
ScrollTo:滚动包含的所有滚动视图,让它们尝试使 position 可见。//public static void ScrollTo (Rect position);
SelectionGrid:创建一个按钮网格。//public static int SelectionGrid (Rect position, int selected, string[] texts, int xCount);
TextArea:创建一个可供用户编辑字符串的多行文本区域。//public static string TextArea (Rect position, string text);
TextField:创建一个可供用户编辑字符串的单行文本字段。//public static string TextField (Rect position, string text);
Toggle:创建一个打开/关闭的开关按钮。//public static bool Toggle (Rect position, bool value, string text);
Toolbar:创建一个工具栏。//public static int Toolbar (Rect position, int selected, string[] texts);
VerticalScrollbar:创建一个垂直滚动条。滚动条是用于滚动文档的控件。大多数情况下,您需要的可能是滚动视图。
//public static float VerticalScrollbar (Rect position, float value, float size, float topValue, float bottomValue);
VerticalSlider:用户可以拖动的垂直滑动条,用于在最小值和最大值之间更改某值。
//public static float VerticalSlider (Rect position, float value, float topValue, float bottomValue);
Window:创建一个弹出窗口。//public static Rect Window (int id, Rect clientRect, GUI.WindowFunction func, string text);
Rect 矩形
构造矩形。//public Rect (float x, float y, float width, float height);
通过最小/最大坐标值创建矩形。//public static Rect MinMaxRect (float xmin, float ymin, float xmax, float ymax);