创造你的世界
脚本编写
事件函数
8min
事件函数是在unity引擎中,gameobject或组件生命周期内自动调用的特殊函数,因此,它们也被称为生命周期事件函数。 事件函数由unity引擎在特定时机自动调用。 事件函数是在unity引擎中,gameobject或组件生命周期内自动调用的特殊函数,因此,它们也被称为生命周期事件函数。 zepeto脚本生命周期流程图 初始化事件 您可以使用初始化事件在更新之前调用初始化代码。 start函数在任何物理更新之前和第一帧之前被调用,而awake函数在调用场景时为场景中的每个对象被调用。 不同对象的start和awake函数以随机顺序被调用,但所有awake调用在start被调用之前完成。 这意味着start函数可以使用在awake函数中之前进行的其他初始化。 定期更新事件 定期更新是指每帧调用的所有更新。 它们在每帧渲染之前改变对象的位置、状态和行为。 zepetoscript为在更新函数中处理计算提供了指导。 物理事件 物理事件通过添加到gameobject中的脚本调用事件函数。 当接触发生、保持和断开时,调用oncollisionenter、oncollisionstay和oncollisionexit函数。 当对象碰撞体被配置为触发器时(即一个不对碰撞做物理反应而只是检测碰撞的碰撞体),调用ontriggerenter、ontriggerstay和ontriggerexit函数。 如果在物理更新期间检测到多个接触,这些函数可能会连续调用多次,因此会将提供碰撞详细信息(位置、对象身份)的参数发送到函数中。 gui事件 zepetoscript支持渲染gui控件的事件,并对元素的点击做出反应。它们的工作方式与正常的帧更新不同,因此与ui相关的逻辑应放在ongui函数中。 鼠标事件 在zepetoscript中,支持响应鼠标交互的事件。 然而,鼠标事件需要在相关的gameobject上存在一个collider或collider2d,并且只有在该collider被鼠标点击时才会触发。 当用户点击鼠标按钮时,会调用onmousedown()。 当用户释放鼠标按钮时,会调用onmouseup()。 当鼠标光标在gameobject的collider或collider2d上时,每帧都会调用onmouseover()。 终止事件 终止事件在场景中所有激活的对象中被调用。 当给定对象被禁用或处于非活动状态时,会调用ondisable函数,并且在应用程序关闭之前,会在所有gameobjects上调用onapplicationquit。 📘 unity事件函数 https //docs unity3d com/kr/current/manual/eventfunctions html https //docs unity3d com/kr/current/manual/eventfunctions html zepetoscript固有支持的所有事件函数在下面的示例代码中列出。 示例 单行为生命周期 import { zepetoscriptbehaviour } from 'zepeto script'; import { collider, collider2d, collision, collision2d } from 'unityengine'; export default class samplemonobehaviourlifecycle extends zepetoscriptbehaviour { awake() { console log('唤醒。'); } onenable() { console log('启用。'); } start() { console log('开始。'); } update() { console log('更新。'); } fixedupdate() { console log('固定更新。'); } lateupdate() { console log('延迟更新。'); } ondisable() { console log('禁用。'); } ondestroy() { console log('销毁。'); } ontriggerenter(coll collider) { console log(`触发进入 ${coll gameobject name}。`); } ontriggerexit(coll collider) { console log(`触发退出 ${coll gameobject name}。`); } ontriggerstay(coll collider) { console log(`触发停留 ${coll gameobject name}。`); } ontriggerenter2d(coll collider2d) { console log(`触发进入2d ${coll gameobject name}。`); } ontriggerexit2d(coll collider2d) { console log(`触发退出2d ${coll gameobject name}。`); } ontriggerstay2d(coll collider2d) { console log(`触发停留2d ${coll gameobject name}。`); } oncollisionenter(coll collision) { console log(`碰撞进入 ${coll gameobject name}。`); } oncollisionexit(coll collision) { console log(`碰撞退出 ${coll gameobject name}。`); } oncollisionstay(coll collision) { console log(`碰撞停留 ${coll gameobject name}。`); } oncollisionenter2d(coll collision2d) { console log(`碰撞进入2d ${coll gameobject name}。`); } oncollisionexit2d(coll collision2d) { console log(`碰撞退出2d ${coll gameobject name}。`); } oncollisionstay2d(coll collision2d) { console log(`碰撞停留2d ${coll gameobject name}。`); } ongui() { console log('gui。'); } onmousedown() { console log('鼠标按下。'); } onmousedrag() { console log('鼠标拖动。'); } onmouseup() { console log('鼠标抬起。'); } onmouseenter() { console log('鼠标进入。'); } onmouseexit() { console log('鼠标退出。'); } onmouseover() { console log('鼠标悬停。'); } onmouseupasbutton() { console log('鼠标抬起作为按钮。'); } onanimatorik(layerindex number) { console log(`动画师ik ${layerindex}。`); } onapplicationfocus() { console log('应用程序聚焦。'); } onapplicationpause() { console log('应用程序暂停。'); } onapplicationquit() { console log('应用程序退出。'); } } 请查看下面的测试代码输出屏幕。 您可以通过点击下面的链接了解更多关于zepetoscript提供的unity事件函数的信息。 📘 事件函数的执行顺序 https //docs unity3d com/kr/current/manual/executionorder html https //docs unity3d com/kr/current/manual/executionorder html