欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Uniy的生命周期函数

程序员文章站 2022-04-03 09:20:27
...

生命周期函数

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()

在点击点击结束的是会运行的函数。
可以在用户要关闭的时候问用户是否要退出。