Uniy的生命周期函数
生命周期函数
unity的函数
void Reset()
Reset是在用户点击检视面板的Reset按钮或者首次添加该组件时被调用,此函数旨在编辑模式下被调用。
在游戏运行的时候不会被用到
用于恢复初始状态。
void Awake()
只会被调用一次,
在Start之前被调用,。
随机调用。
脚本被加载的时候执行,
在game object上载入内存的时候会被加载;使用addcommpoent<>()会在add之前被调用
void OnEnable
当脚本被启用的时候调用,就是脚本前面的钩被勾上了
enabled=false ;
会调用OnDisable。
enabled=true;
会调用一次OnEnable。
会被重复调用,也就是在setActive为true的时候会被启用一次。
void Start()
Start仅在Update函数第一次被调用前调用,
Start在behaviour的生命周期中只被调用一次。
Awake在Start之前执行。
可以延迟初始化代码。
开始渲染的时候执行。
再次设置SetActive也不会重复调用
void FixedUpdate()
固定更新,物理更新,和物理相关的在这里面,还有位置
每0.02秒就会调用一次,不管别的东西
可以在编辑器里面设置固定刷新的时间
void OnTrigger()
Trigger,被标记为Trigger的碰撞盒基本不再具备物理特性(如果有刚体的话,且使用重力,受重力下落)
private void OnTriggerEnter(Collider other)
{
Debug.Log(gameObject.name + "Enter::" + other.gameObject.name);
}
private void OnTriggerStay(Collider other)
{
Debug.Log(gameObject.name + "Stay::" + other.gameObject.name);
}
private void OnTriggerExit(Collider other)
{
Debug.Log(gameObject.name + "Exit::" + other.gameObject.name);
}
这个函数和targger()是一样的但是所表现出来的东西不一样,
tagger碰撞没有运动,它是插在里面的.
collisider的碰撞有运动
tagger不写在update里面.
要勾选Is Tagger才有用,
适用于子弹打人的场景
void OnCollosion()
OnCollsionExter(Collision collisionInfo),当collider/rihidbody碰撞另一个
rigidboby/collider时OnCollisionEnter
会被调用一次
OnCollsionStay(Collision collisionInfo),当collider/rihidbody(进入)触发另一个
rigidboby/collider时OnCollisionStay
时候会在每一帧被调用
OnCollsionExter(Collision collisionInfo),当collider/rihidbody
停止(离开)触发另一个
rigidboby/collider时OnCollisionExit
会被调用
上面三个的参数完全相同
这个函数和targger()是一样的,但是所表现出来的东西不一样,
这个碰撞会有运动,
tagger碰撞没有运动,它是插在里面的.
这个函数不写在update()里面
private void OnCollisionEnter(Collision collision)
{
Debug.Log(gameObject.name + "Enter::" +
collision.gameObject.name);
}
private void OnCollisionStay(Collision collision)
{
Debug.Log(gameObject.name + "::Stay::" +
collision.gameObject.name);
}
private void OnCollisionExit(Collision collision)
{
Debug.Log(gameObject.name + "Exit::" +
collision.gameObject.name);
}
void MouseXXX()
void OnMouseUp();当用户释放鼠标按钮时调用,OnMouseUp只调用再按下的同一物体上。此函数在Iphone上无效
void OnMouseDown();当鼠标在Collider(碰撞体)上点击时调用;
void OnMouseEnter(); 当鼠标进入到Collider是调用
void O你MouseExit(); 当鼠标移出的时候调用
void OnMouseOver(); 当鼠表悬浮在Colliser上时调用
若要检测UI时间亲使用EventTrigger组件。
void Update()
每一帧都会被调用,在Start之后执行
和性能相关,若要在Update里写移动相关,请乘上Time.Deltime.
void LateUpdate()
当Behaviour启用时,其Update在每一帧被调用。
LateUpdate是在所有Update函数被调用后调用,
这可以用于调整脚本执行顺序,
例如:当物体在Updte里移动时,跟随物体的相机可以在LateUpdate里实现。
频率和Update一样,
void OnGUI()
var bu= GUI.Button(new Rect(10, 10, 150, 100), "buttrn");
if (bu!=false)
{
print("dds");
}
if (GUI.Button(new Rect(10, 10, 150, 100), "I am Butten"))
{
print("点击了按钮");
}
两个相同
print和debug.log相同
加入一个按钮,参数是,横坐标,纵坐标,长,宽,名字。
void OnDisable()
当物体被隐藏的时候调用。
参照OnEnable
void OnDrawGizmos()
画一个类似摄像机一样的标识,他在game视图不可见,
Gizmos.DrawCube(Vector3.zero, Vector3.one * 2);
画一个Gizmos正方形,原点以及半径。
Gizmos.Color=Color.Black;
该变颜色。
void OnApplicationPause()
oid OnApplicationPause()
当游戏暂停的时候会被调用,暂停结束的时候会从头开始
void OnDisable()
在脚本失效的时候调用,
失效有脚本被销毁了,gameobject被销毁了
void OnDestory()
当脚本被销毁,脚本被销毁有gameobject和脚本被销毁
就像是人死了,他会像所有游戏物体发出通告
void OnApplicationQuit()
在点击点击结束的是会运行的函数。
可以在用户要关闭的时候问用户是否要退出。