在Unreal Engine 4中,自定义事件和纯函数都可以用于在蓝图中组织和封装代码,但是它们之间存在一些关键区别: 1. **自定义事件**:自定义事件主要用于响应系统或用户事件,如开始游戏、碰撞事件、按键事件等。自定义事件可以在其他蓝图节点中被调用,以触发一系列的操作。自定义事件不能有返回值,但可以接受参数。自定义事件是异步的,它不会阻塞其他的蓝图操作。 2. **纯函数**:纯函数是一种特殊类型的函数,它不会改变任何状态,只根据输入参数计算并返回结果。纯函数没有执行引脚,不能包含会改变状态的操作,例如变量赋值、启动定时器等。纯函数是同步的,它在被调用时立即计算结果并返回。 如果你需要对一些数据进行计算并获取结果,或者需要对一些数据进行封装和重用,那么纯函数可能是个好选择。如果你需要响应某个事件并执行一系列操作,那么自定义事件可能更适合。 总的来说,自定义事件和纯函数在Unreal Engine的蓝图系统中都扮演着重要角色,它们各有各的用处,选择使用哪一个取决于你的具体需求。 在计算机编程中,同步和异步是指程序执行的两种基本方式。 - **同步(Synchronous)**:在同步执行中,任务是按顺序一步一步执行的。当一个任务开始执行,它会一直运行,直到任务完成,期间不会中断去执行其他任务。这意味着如果一个任务需要等待某个条件(例如:等待用户输入,等待文件加载),那么它会阻塞后续的任务,直到该条件满足。同步执行的优点是逻辑简单直接,容易理解;缺点是如果一个任务执行时间过长,或者需要等待,就会导致整个程序卡住,无法处理其他任务。 - **异步(Asynchronous)**:与同步执行相反,异步执行不会阻塞后续任务。在异步执行中,任务会在后台运行,程序可以在等待这个任务完成的同时去执行其他任务。当异步任务完成后,它通常会使用某种方式(例如:回调函数,事件,Promise等)来通知主程序。异步执行的优点是可以提高程序的效率,特别是对于需要等待的任务,如网络请求、文件读写等;缺点是编程模型相对复杂,需要处理任务间的同步和通信问题。 Unreal Engine 中的异步模式主要是基于事件和多线程。例如,当你触发一个自定义事件或使用异步任务节点(如 "Run on Server")时,这些操作是异步的,它们不会阻塞游戏的主线程。然而,Unreal Engine 中大部分的蓝图节点都是同步的,它们会按照顺序立即执行并返回结果。 至于多线程,Unreal Engine 提供了一些基础设施,如 "Async Task" 蓝图节点,以及 C++ 中的 "FAsyncTask" 类,来帮助你在游戏中使用多线程。这些机制允许你在后台执行一些耗时的任务,如加载大文件、进行复杂的计算等,而不会阻塞游戏的主线程。然而,多线程编程有其复杂性,并且在蓝图中支持有限,因此通常更适合有经验的开发者使用。 + 示例 ![[Picture/蓝图-事件-示例.png]]