Unity常见API.docx
- 文档编号:5794687
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:10
- 大小:21.91KB
Unity常见API.docx
《Unity常见API.docx》由会员分享,可在线阅读,更多相关《Unity常见API.docx(10页珍藏版)》请在冰豆网上搜索。
Unity常见API
UnityAPI
GameObject
Unity场景中所有物体都是GameObject
GameObject.name游戏物体的名字
GameObject.tag标签,注意:
如果内置的标签不够用,一定要先创建好之后,再添加
GameObject.layer该物体所属的层
GameObject.isStatic该物体是否是静态物体
GameObject.SetActive用来设置物体在场景状态显示或者隐藏
GameObject.activeSelf只读属性,用来得到自身的状态是否是激活的,如果该物体的父物体是隐藏的,自身是激活的,返回结果仍为true
GameObject.activeInHirarchy只读属性,得到自身在层级面板中是否是激活的,如果父物体是隐藏的,自身是激活的,返回结果是false
GameObject.CreatePrimitive静态方法,用来创建一个基本物体(cube,plane等)
GameObject.Find静态方法,参数是string类型的,根据你填入的参数名字,遍历场景中的所有物体,找到你要的物体,比较消耗资源,不能找到隐藏的物体;尽量不要在Update里使用;
GameObject.FindWithTag静态方法,找到场景中符合你填入的标签的物体,不能找隐藏的物体
GameObject.Instantiate静态方法,实例化(克隆)一个物体,有多个重载,可以在创建的同时设置位置和父物体
GameObject.Destory销毁一个gameobject,可以控制物体销毁的时间;是在下一帧Update销毁
GameObject.DontDestoryOnLoad在切换场景的时候不销毁某些东西
GameObject.AddComponent用来给一个物体添加组件
GameObject.GetComponent用来得到物体身上的组件,脚本也是组件,所以在得到物体身上的脚本组件的是候直接填脚本的名字即可
GameObject.SendMessage向同级发送消息
GameObject.BroadcastMessage向自身和子物体广播消息
GameObject.SendMessageUpwards向上一级发送消息
Prefab预制体,可以把在层级视图中做好的动东西拖到Project面板做成预制
Transform
Transform.position表示世界坐标中物体的位置
Transform.localPosition表示局部坐标中物体的位置
Transform.rotation表示世界坐标中物体的旋转值,是一个四元数
Transform.locaRotation表示局部坐标中物体的旋转值,是一个四元数
Transform.eulerAngle局部欧拉角,设置局部旋转值,返回Vector3类型
Transform.localEulerAngle局部欧拉角,设置全局旋转值,返回Vector3类型
Transform.localScale设置物体的缩放,返回Vector3类型
Transform.forward物体的前方,该向量长度为1
Transform.right物体的右侧
Transform.up物体的上方
Transform.root根,返回物体根源父物体
Transform.parent设置父物体(属性)Get/Set
Transform.SetParent设置父物体(方法)
Transform.chidCount返回子物体的数量
Transform.GetChild根据索引找到子物体
Transform.DetachChildren解除父子关系
Transform.GetSiblingIndex获取兄弟物体,例如:
兄弟几个里,你排行第几
Transform.SetSiblingIndex
设置自己的索引;例如:
张飞.transform.SetSiblingIndex
(2)—张飞设置自己的排行是老三
Transform.SetAsFirstSibling设置为第一个兄弟物体
Transform.SetAsLastSibling设置为最后一个兄弟物体
Transform.LookAt看向一个位置,传一个Vector3或者transform
Transform.Rotate旋转了多少,传一个Vector3,注意默认的第二个参数Space.Self
Transform.Translate平移了一个距离
Transform.TransformPoint
transform.TransformPoint(Vector3.one)——把transform坐标系里的one,转成世界坐标。
以transform.position为原点,transform.forward为z轴,transform.right为x轴,transform.up为y轴建立起一个坐标系,把这个坐标系里的(1,1,1),转成世界坐标
Vector3类
Vector3.zero(0,0,0)
Vector3.one(1,1,1)
Vector3.up上(0,1,0)
Vector3.down下(0,-1,0)
Vector3.left左(-1,0,0)
Vector3.right右(1,0,0)
Vector3.forward前面,在Unity中指坐标轴的Z轴
Vector3.back后面,与forward相反
Vector3.x/y/z是Vector3的参数,是float类型
Vector3.magnitude返回向量的长度
Vector3.sqrMagnitude返回这个向量的长度的平方
Vector3.normalized返回向量的长度为1。
Vector3.Angle
staticfloatAngle(from:
Vector3,to:
Vector3)由from和to两者返回一个角度。
也就是from和to的连线和它们一个指定轴向的夹角
Vector3.Distance
staticfloatDistance(a:
Vector3,b:
Vector3)返回a和b之间的距离。
Vector3.Dot
staticfloatDot(lhs:
Vector3,rhs:
Vector3)两个向量的点乘。
向量A·向量B=|向量A|*|向量B|*cosAB。
用来描述两个向量的接近程度。
A(Xa,Ya,Za)`B(Xb,Yb,Zb)=XaXb+YaYb+ZaZb
Vector3.Cross
staticVector3Cross(lhs:
Vector3,rhs:
Vector3)两个向量的叉乘。
返回的结果是一个向量。
长度:
|向量Ax向量B|=|向量A|*|向量B|*sinAB。
方向用左手定则来判断
Vector3.Lerp
staticVector3Lerp(from:
Vector3,to:
Vector3,t:
float)两个向量之间的线性插值。
按照数字t在from到to之间插值。
t在0到1之间
Vector3.Slerp
staticVector3Slerp(from:
Vector3,to:
Vector3,t:
float)两个向量之间的球形插值。
Vector3.MoveTowards
staticVector3MoveTowards(current:
Vector3,target:
Vector3,maxDistanceDelta:
float)从current移动向target,移动的距离是maxDistanceDelta
Vector3.Normalize
使向量的长度为1。
这个函数将改变当前向量,如果你想保持当前的向量不改变,使用normalized属性
Vector3.Project()
staticVector3Project(vector:
Vector3,onNormal:
Vector3)投影一个向量到另一个向量。
想一下力的分解
Vector3.Reflect
沿着法线反射向量staticfunctionReflect(Vector3inDirection,Vector3inNormal)返回的值是inDirection从带有法线inNormal的所表面反射的线
Quaternion
四元数,用于表示旋转
Quaternion.Euler
staticQuaternionEuler(x:
float,y:
float,z:
float)返回一个旋转角度,绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度。
把一个欧拉角转成四元数
Quaternion.Angle
staticfloatAngle(a:
Quaternion,b:
Quaternion)返回a和b之间的角度。
Quaternion.identity同一性同一性旋转(只读),该四元数,相当于“无旋转”这个物体完全对其世界或者父轴
Quaternion.eulerAngles欧拉角返回表示旋转的欧拉角度
Quaternion.Lerp插值staticfunctionLerp(Quaternionfrom,Quaternionto,floatt)通过t值form向to之间插值,并且规范化结果这个比Quaternion.Sclerp更快但是如果旋转较远看起来就比较差
Quaternion.LookRotation注视旋转staticfunctionLookRotation(Vector3forward,Vector3upwards=Vector3.up)创建一个旋转,使z轴朝向view,y轴朝向up
MonoBehaviour
继承MonoBehaviour的类不能被实例化,但能拖在物体身上,其生命周期内的函数及执行顺序
Awake()/OnEnable()/Start()/FixedUpdate()/Update()/LateUpdate()/OnGUI()/OnDisable()/OnDestroy()/OnApplicationQuit()
Awake()
生命周期内的函数。
当游戏运行时,只执行一次;即使挂载在游戏物体上,把√取消,该方法依然执行。
该方法表示,游戏运行后,脚本挂到游戏物体身上会被唤醒。
通常在Awake里面给变量赋值,
MonoBehaviour.OnEnable()Awake()之后,Start()之前执行。
表示该脚本是否起作用,如果起作用,自动调用该方法。
如果循环开启和关闭脚本则可以多次执行
MonoBehaviour.Start()只执行一次,在OnEnable之后.一般在start和awake方法里面给字段或属性赋初始值如果跨脚本取成员,此时需先得到另外一个脚本,一般写在start方法里
MonoBehaviour.FixedUpdate是按固定时间间隔来运行,它和游戏运行的帧速率无关。
该时间间隔可以人为改变
MonoBehaviour.Update()Update和帧速率有关,帧速率越高,运行的次数越高,它是每帧执行一次,也就是说要想实时的控制某个物体或者运行某些代码,需要放在该方法里面
MonoBehaviour.LateUpdate()它在Update方法执行完之后执行,多用于摄相机
MonoBehaviour.OnGUI()使用代码创建UI图标,所有的代码需要放在该方法里面该方法一帧执行多次有时候想要输出一些数据到屏幕上方便查看,新建一个UI对象又挺麻烦,用OnGUI()在屏幕上直接绘制UI比较方便。
GUI.Label(newRect(100,100,200,80),“aaa,style);这条语句在屏幕中绘制了一个Label,
MonoBehaviour.OnDisable()表示该脚本不起作用时,调用该方法
MonoBehaviour.OnDestroy()把该脚本从物体身上移除或者脚本所在的游戏物体被销毁,自动调用该方法
MonoBehavior.OnApplicationQuit()当用户停止运行时触发;当web被关闭时在网络播放器中被调用。
MonoBehaviour.OnCollisionEnter物体碰撞检测的方法当物体进入碰撞的时候触发该方法voidOnCollisionEnter(Collisioncollision){}括号里的参数是检测的物体
MonoBehaviour.OnCollisionStay物体碰撞检测的方法当物体一直处于碰撞的状态触发该方法并且一直执行voidOnCollisionStay(Collisioncollision){}括号里的参数是检测的的物体
MonoBehaviour.OnCollisionExit物体碰撞检测的方法当物体退出碰撞的时候触发该方法voidOnCollisionExit(Collisioncollision){}括号里的参数是检测的的物体
MonoBehaviour.OnDrawGizmos用于场景视图可视化调整和辅助设置
voidOnDrawGizmos(){Gizmos.color=Color.blue;//为随后绘制的gizmos设置颜色。
Gizmos.DrawWireSphere(transform.position,.25f);//使用center和radius参数,绘制一个线框球体。
参数为绘制点,半径}
MonoBehaviour.OnDrawGizmosSeleted用于场景视图可视化调整和辅助设置仅在脚本附加的物体被选择时调用
MonoBehaviour.OnTriggerEnter物体触发器检测的方法当物体进入触发器检测的时候触发该方法voidOnTriggerEnter(Collisioncollision){}括号里的参数是检测的的物体
MonoBehaviour.OnTriggerStay物体触发器检测的方法当物体一直处于触发器检测的状态时,触发该方法并且一直执行voidOnTriggerStay(Collisioncollision){}括号里的参数是检测的的物体
MonoBehaviour.OnTriggerExit物体触发器检测的方法当物体退出触发器检测的时候触发该方法voidOnTriggerExit(Collisioncollision){}括号里的参数是检测的的物体
MonoBehaviour.OnMouseEnter当鼠标进入屏幕显示物体的GUIElement或Collider时调用。
MonoBehaviour.OnMouseOver当鼠标在屏幕显示物体的GUIElement或Collider上时每帧调用
MonoBehaviour.OnMouseExit当鼠标在屏幕显示物体的GUIElement或Collider不再停留(退出)时调用
MonoBehaviour.OnMouseDrag当用户单击了GUIElement或Collider并且仍然按住鼠标时,将调用OnMouseDrag。
MonoBehaviour.OnMouseUp当用户抬起鼠标按钮时,将调用OnMouseUp。
MonoBehaviour.Invoke一段时间后(以秒计时),调用某个方法
MonoBehaviour.InvokeRepeating以秒为单位,在规定时间后以固定间隔调用与传入方法名相同的方法
CancelInvoke取消这个MonoBehaviour上的某Invoke调用。
CancelAllInvoke取消这个MonoBehaviour上的所有Invoke调用。
MonoBehaviour.IsInvoking是否有方法在通过Invoke在调用
MonoBehaviour.StartCoroutine通过指定协程方法名或方法来启动协程
MonoBehaviour.StopCoroutine通过指定协程方法名或方法来停止协程
MonoBehaviour——Yieldreturn/break执行循环返回迭代器,以及终止方法。
可用作创建协程
MonoBehaviour.IEnumerator一个接口,可用作实现迭代器以及创建协程
MonoBehaviour——WaitForSecond等待指定时间与Yieldreturn配合使用以秒为单位将线程挂起指定时间
MonoBehaviour.OnControllerCollderHit控制碰撞器碰撞,当角色控制器碰到一个可执行移动的碰撞器时,OnControllerColliderHit被调用
Input
输入控制管理器:
Edit->ProjectSetting->input
Input.GetMouseButtonDown在用户按下指定鼠标按键的那一帧返回true0代表鼠标左键,1代表鼠标右键
Input.GetMouseButtonUp在用户释放指定鼠标按键的那一帧返回true
Input.GetMouseButton当指定的鼠标按钮被按下时返回true,0代表左键,1右键,2滚轮
Input.GetKeyDown当用户按下指定名称的按键时的那一帧返回true
Input.GetKeyUp在用户释放给定名字的按键的那一帧返回true
Input.GetKey按键被用户按住时返回true,键值用KeyCode这个枚举来指定
Input.GetButtonDown在给定名称的虚拟按钮被按下的那一帧返回true
Input.GetButtonUp在用户释放指定名称的虚拟按钮时返回true
Input.GetButton当对应的虚拟按钮被按住时返回true。
虚拟按钮是在InputManager里设置的。
比如Jump、Fire1
Input.GetAxis根据坐标轴名称返回虚拟坐标系中的值想想控制飞船移动范围是-1~1,而且是渐变的
Input.GetAxis(“Horizontal")水平的Input.GetAxis(Horizontal"")控制物体水平移动,A\D键和光标区的左右键"
Input.GetAxis("Vertical")垂直的Input.GetAxis(""Vertical"")键盘上的W/S和上下键"
Input.mousePosition当前鼠标所在位置,是一个屏幕坐标(屏幕坐标:
左下角是原点,右上角是Screen.width,Screen.height)
Input.GetAxisRaw跟GetAxis类似,值只有-1,0,1
voidUpdate(){floatspeed=Input.GetAxisRaw(Horizontal"")*Time.deltaTime;}"
Rigidbody
Rigidbody.mass刚体的质量
Rigidbody.drag刚体的阻力
Rigidbody.angularDrag刚体的角阻力
Rigidbody.userGravity控制重力是否影响整个刚体返回值是bool类型
Rigidbody.MovePosition刚体所带的移动方法,物体必须要有Rigidbody组件才能使用MovePosition方法
Rigidbody.MoveRotation刚体中的物体旋转的方法,常用于物体的旋转自转
Rigidbody.velocity刚体的速度
Rigidbody.isKinematic控制物理学是否影响刚体返回值为bool类型
Rigidbody.AddForce添加一个力到刚体functionAddForce(Vector3force,FoceModemode)
Rigidbody.AddForceAtPosition在某一位置上添加力
functionAddForceAtPosition(Vector3force,Vector3postion,ForceModemode)在position位置应用force力
Rigidbody.AddExplosionForce添加爆炸力
voidAddExplosionForce(
floatexplosionForce,
Vector3explosionPosition,
floatexplosionRadius,
floatupwardsModifier,
ForceModemode)
应用一个力到刚体来模拟爆炸效果。
爆炸力将随着到刚体的距离线性衰减
Physics
Physics.Raycast射线检测,可用于实现点击地面让物体移动过去,地面可以添加层Layer
Physics.RaycastAll投射一条光线,返回一个RaycastHit[]数组;这个方法里的光线可以认为是有穿透性
Physics.OverlapSphere球形检测,检测球内的所有碰撞物,重载方法中可具体检测某层Layer
Random
Random.Range随机范围内区一个数,注意整数取下不取上
Random.insideunitSphere半径为1的球,在其内取一个点并返回
Random.ColorHSV返回一个随机颜色
Color
Color.r/g/b/a物体颜色的三原色和透明度,值的范围0~1
CharacterController
角色控制器可以用于角色控制,跟刚体(Rigidbody)是有区别的,它自身就具有刚体和碰撞器的效果
CharacterController.Move移动,移动方向是以世界坐标为参考方向的,朝某个方向移动了一个距离
CharacterControllerle.SimpleMove
publicboolSimpleMove(Vector3speed)使物体能够完成简单的移动操作Y轴速度被忽视,自动启用重力
CharacterController.isGrounded移动角色控制器最后是否触碰地面
CharacterController.velocity角色当前的相对速度
CharacterController.collisionFlags在最后的CharacterController.Move调用期间,胶囊体的哪个部分与周围环境相碰撞。
CharacterController.radius角色胶囊体的半径
CharacterController.height角色胶囊体的高度
CharacterController.slopeLimit角色控制器能够爬上去的坡度的限制
CharacterController.stepOffset以米为单位的角色控制器的台阶偏移量(台阶高度)。
CharacterController.detectCollisions其他的刚体和角色控制器是否能够与本角色控制器相碰撞(默认值通常是enabled)
Resources类
加载资源加载的资源必须统一放到Assets/Resourcees文件夹下
Resources.Load
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Unity 常见 API