您的位置:首页 > 房产 > 建筑 > 上海闵行区疫情_后端开发工程师_百度seo可能消失_台州关键词优化平台

上海闵行区疫情_后端开发工程师_百度seo可能消失_台州关键词优化平台

2025/11/6 8:19:36 来源:https://blog.csdn.net/2401_83210138/article/details/148409026  浏览:    关键词:上海闵行区疫情_后端开发工程师_百度seo可能消失_台州关键词优化平台
上海闵行区疫情_后端开发工程师_百度seo可能消失_台州关键词优化平台

AciontKit 是一个时序动作执行系统。

游戏中,动画的播放、延时、资源的异步加载、网络请求等,这些全部都是时序任务,而 ActionKit,可以把这些任务全部整合在一起,使用统一的 API,来对他们的执行进行计划

延时回调

using UnityEngine;namespace QFramework.Example
{public class DelayExample : MonoBehaviour{void Start(){Debug.Log("Start Time:" + Time.time);ActionKit.Delay(1.0f, () =>{Debug.Log("End Time:" + Time.time);}).Start(this);}}
}// 输出结果
// Start Time: 0
// End Time: 1.00781

作用:在指定的时间后执行一个回调函数。

场景:在游戏中,你可能需要在一段时间后触发某个事件,比如在玩家完成某个任务后,1秒后显示奖励信息。 

序列和完成回调

using UnityEngine;namespace QFramework.Example
{public class SequenceAndCallback : MonoBehaviour{void Start(){Debug.Log("Sequence Start:" + Time.time);ActionKit.Sequence().Callback(() => Debug.Log("Delay Start:" + Time.time)).Delay(1.0f).Callback(() => Debug.Log("Delay Finish:" + Time.time)).Start(this, _ => { Debug.Log("Sequence Finish:" + Time.time); });}}
}
// 输出结果
// Sequence Start:0
// Delay Start:0
// Delay Finish:1.00537
// Sequence Finish:1.00537

作用:按顺序执行一系列动作,并在序列完成后执行一个回调。

场景:在游戏的开场动画中,你可能需要先播放一段动画,然后等待1秒,最后显示游戏标题。

 帧延时

using UnityEngine;namespace QFramework.Example
{public class DelayFrameExample : MonoBehaviour{void Start(){Debug.Log("Delay Frame Start FrameCount:" + Time.frameCount);ActionKit.DelayFrame(1, () => { Debug.Log("Delay Frame Finish FrameCount:" + Time.frameCount); }).Start(this);ActionKit.Sequence().DelayFrame(10).Callback(() => Debug.Log("Sequence Delay FrameCount:" + Time.frameCount)).Start(this);// ActionKit.Sequence()//      .NextFrame()//      .Start(this);ActionKit.NextFrame(() => { }).Start(this);}}
}// 输出结果
// Delay Frame Start FrameCount:1
// Delay Frame Finish FrameCount:2
// Sequence Delay FrameCount:11

作用:在指定的帧数后执行一个回调。

场景:在需要与游戏帧率同步的任务中使用,比如在每一帧更新UI元素的位置,或者在特定帧数时触发动画。

条件执行

using UnityEngine;namespace QFramework.Example
{public class ConditionExample : MonoBehaviour{private void Start(){ActionKit.Sequence().Callback(() => Debug.Log("Before Condition")).Condition(() => Input.GetMouseButtonDown(0)).Callback(() => Debug.Log("Mouse Clicked")).Start(this);}}
}// 输出结果
// Before Condition
// 鼠标左键按下后
// Mouse Clicked

作用:在满足特定条件时执行一个动作。

场景:在玩家输入响应中使用,比如只有当玩家按下鼠标左键时,才执行攻击动作。

重复执行

using UnityEngine;namespace QFramework.Example
{public class RepeatExample : MonoBehaviour{private void Start(){ActionKit.Repeat().Condition(() => Input.GetMouseButtonDown(0)).Callback(() => Debug.Log("Mouse Clicked")).Start(this);ActionKit.Repeat(5).Condition(() => Input.GetMouseButtonDown(1)).Callback(() => Debug.Log("Mouse right clicked")).Start(this, () =>{Debug.Log("Right click finished");});}}
}// 输出结果
// 每次点击鼠标左键都会输出:Mouse Clicked 
// 点击鼠标右键,只会输出五次:Mouse right clicked,第五次输出  Right click finished
// 

作用:重复执行某个动作,直到满足某个条件或达到指定次数。

场景:在游戏中实现连续点击得分的机制,或者在玩家持续按住某个键时重复执行某个动作。

并行执行

using UnityEngine;namespace QFramework.Example
{public class ParallelExample : MonoBehaviour{void Start(){Debug.Log("Parallel Start:" + Time.time);ActionKit.Parallel().Delay(1.0f, () => { Debug.Log(Time.time); }).Delay(2.0f, () => { Debug.Log(Time.time); }).Delay(3.0f, () => { Debug.Log(Time.time); }).Start(this, () =>{Debug.Log("Parallel Finish:" + Time.time);});}}
}// 输出结果
// Parallel Start:0
// 1.030884
// 2.025135
// 3.018883
// Parallel Finish:3.018883

作用:同时执行多个动作,并在所有动作完成后执行一个回调。

场景:在游戏加载时,可能需要同时加载多个资源,比如音乐、纹理和模型,并在所有资源加载完成后开始游戏。

自定义动作

using UnityEngine;namespace QFramework.Example
{public class CustomExample : MonoBehaviour{class SomeData{public int ExecuteCount = 0;}private void Start(){ActionKit.Custom(a =>{a.OnStart(() => { Debug.Log("OnStart"); }).OnExecute(dt =>{Debug.Log("OnExecute");a.Finish();}).OnFinish(() => { Debug.Log("OnFinish"); });}).Start(this);// OnStart// OnExecute// OnFinishActionKit.Custom<SomeData>(a =>{a.OnStart(() =>{a.Data = new SomeData(){ExecuteCount = 0};}).OnExecute(dt =>{Debug.Log(a.Data.ExecuteCount);a.Data.ExecuteCount++;if (a.Data.ExecuteCount >= 5){a.Finish();}}).OnFinish(() => { Debug.Log("Finished"); });}).Start(this);// 0// 1// 2// 3// 4// Finished// 还支持 Sequence、Repeat、Spawn 等// Also support sequence repeat spawn// ActionKit.Sequence()//     .Custom(c =>//     {//         c.OnStart(() => c.Finish());//     }).Start(this);}}
}

作用:允许用户创建自定义的动作序列,可以包含开始、执行和完成的回调。

场景:在需要实现复杂逻辑的动作序列时使用,比如一个技能的施放过程,可能包含开始施法、持续施法和施法完成的动画和效果。

协程支持

using System.Collections;
using UnityEngine;namespace QFramework.Example
{public class CoroutineExample : MonoBehaviour{private void Start(){ActionKit.Coroutine(SomeCoroutine).Start(this);SomeCoroutine().ToAction().Start(this);ActionKit.Sequence().Coroutine(SomeCoroutine).Start(this);}IEnumerator SomeCoroutine(){yield return new WaitForSeconds(1.0f);Debug.Log("Hello:" + Time.time);}}
}// 输出结果
// Hello:1.002077
// Hello:1.002077
// Hello:1.002077

作用:支持将Unity协程转换为ActionKit动作,以便在ActionKit中使用协程。

场景:在需要使用协程来实现延时或等待某些条件满足时,比如在NPC巡逻路径中,使用协程来控制巡逻的间隔和路径点的停留时间。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com