虚幻宏

本文深入探讨了虚幻引擎中的蓝图系统,解释了BlueprintReadWrite、BlueprintCallable等关键概念的作用和使用场景,同时介绍了如何利用UE_LOG进行日志记录,以及BlueprintAssignable与组播委托的配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BlueprintReadWrite可在蓝图系统中读和写(用在变量上)

BlueprintCallable可在蓝图 系统中被调用(用在函数上)

BlueprintReadOnly只能在蓝图中被读

BlueprintWriteOnly只能在蓝图中被改写

Category=""将定义的东西放在“”中的分类下

UE_LOG(LogTemp,Log,TEXT(“Hello World!”));在虚幻的报错日志中报错(有两个逗号,左边逗号左边的变量是日志类型,两逗号中间的变量是报错等级log显示白字warning显示橙字error显示红字,右逗号右边的是虚幻的文本宏可以定义报错需要输出的文字)

UE_LOG(LogTemp,Warning,TEXT(“Hello World!”));

UE_LOG(LogTemp,Error,TEXT(“Hello World!”));

BlueprintAssignable只能与组播委托共用。公开属性在蓝图中指定。

<think>我们正在讨论的是虚幻引擎(UnrealEngine)中的(Macro),注意这里不是指C++预处理,而是指编辑器中的蓝图(Blueprint Macro)。用户询问的是在虚幻编辑器中何时可以运行以及使用条件。关键点:1.蓝图(Blueprint Macro)的定义:蓝图是一组可重用的节点序列,封装在图中,可以在其他蓝图中多次调用。2.运行时机:蓝图在运行时(Play)或编辑器模式下(如构建、编译等)都可以执行,具取决于被调用的上下文。3.使用条件:创建和使用蓝图需要满足一些条件,比如必须在库(MacroLibrary)中定义,或者直接在蓝图类中定义。详细说明:一、运行时机蓝图的运行时机与其被调用的时机一致。例如:-如果被放置在事件图表(Event Graph)中,并且该事件在游戏运行时触发(如EventBeginPlay),那么将在游戏运行时执行。-如果被放置在构造脚本(Construction Script)中,那么当在编辑器中放置或修改Actor时(即编辑器模式下),就会执行。-如果被用于编辑器工具(EditorUtility)中,那么它可以在编辑器模式下执行(无需运行游戏)。二、使用条件1.必须定义在库(MacroLibrary)或蓝图类中。-库:专门用于存放的蓝图,不能包含变量和事件,只能包含。创建方法:内容浏览器右键->蓝图->蓝图库。-蓝图类:在普通蓝图类的图表中也可以创建,但这样的只能在该蓝图类内部使用。2.的输入/输出引脚:定义时需要设置输入和输出,这样在其他蓝图中调用时才能正确连接。3.的纯函数性(Pure):-如果是纯函数(Pure),则它可以在任何需要值的节点位置使用(例如在数学表达式中),因为它没有执行引脚(execution pins),只有输入输出数据引脚。-非纯则必须连接执行引脚。4.的局限性:-不能递归调用(即内部不能调用自身)。-内部不能使用时间轴(Timeline)节点。-内部不能定义事件(Event)。三、示例:创建和使用蓝图步骤1:创建蓝图库-在内容浏览器中右键选择“蓝图”->“蓝图库”,命名为“MyMacroLibrary”。-双击打开,点击“新建”按钮,命名为“PrintHelloWorld”。步骤2:设计-在图表中,添加一个输入执行引脚(Input Execution)和一个输出执行引脚(OutputExecution)。-添加一个“Print String”节点,连接输入执行到“Print String”,再连接到输出执行。-编译保存。步骤3:在其他蓝图中使用-打开任意蓝图的事件图表,从节点面板搜索“PrintHelloWorld”,拖拽到图表中。-连接到事件(如EventBeginPlay)后,即可在游戏运行时打印字符串。四、编辑器模式下运行如果希望在编辑器模式下运行(例如在构建或编辑时),可以通过以下方式:-在构造脚本(Construction Script)中使用:当在编辑器中移动或修改Actor时,构造脚本会运行。-使用编辑器工具(Editor Utility):可以创建编辑器工具蓝图,在其中使用,并通过编辑器按钮触发。注意:在编辑器模式下运行时,不能访问游戏运行时的对象(如玩家控制器等),因为游戏尚未运行。五、数学表达式的使用(按照要求)在蓝图中,我们经常使用数学表达式节点,例如计算向量长度:$|\vec{v}|= \sqrt{v_x^2 +v_y^2+ v_z^2}$。在蓝图中,我们可以封装这样的计算。六、相关问题根据用户要求,生成相关问题:§§相关问题§§1.蓝图与蓝图函数库(Blueprint FunctionLibrary)有什么区别?2.如何在编辑器模式下(不运行游戏)执行蓝图?3.蓝图有哪些常见的使用场景和最佳实践?4.蓝图在性能上有什么优缺点?5.如何调试蓝图?</think>在虚幻编辑器(Unreal Editor)中,(Macro)的运行时机和使用条件取决于的类型和上下文。以下是关键要点: ### 一、的运行时机 1. **编辑器(Editor Utility Macros)** - **手动触发**:通过工具栏按钮或菜单项执行(例如:`Editor Utility Widget`中的按钮) - **编辑器事件**:响应特定编辑器事件(如地图加载、资产导入)自动执行 - **时机示例**: ```text 地图保存前 → 自动运行清理 资产导入后 → 自动运行重命名 ``` 2. **蓝图(Blueprint Macros)** - **游戏运行时**:通过游戏逻辑触发(如`Event BeginPlay`) - **编辑器构建时**:在以下情况执行: - 编译蓝图时(`Compile`) - 构建光照时(`Build Lighting`) - 打包项目时(`Package Project`) - **构造脚本(Construction Script)**:在编辑器中修改Actor属性时实时执行[^1] 3. **控制台命令** - 通过`~键打开控制台输入命令 - 格式:`Macro [名称]` ### 二、使用条件 1. **通用要求** - ✅ 必须在**库(Macro Library)** 中定义 - ✅ 蓝图需在**可编译蓝图**中(非关卡蓝图需关联到Actor) - ❌ 不能在未加载的关卡或未引用的资产中运行 2. **编辑器特殊条件** - 需启用`Editor Scripting Utilities`插件 - 需要Python支持(部分高级): ```ini ; DefaultEngine.ini [Python] bEnablePython=true ``` 3. **蓝图限制** - ❌ 不能包含**延迟节点**(如`Delay`) - ❌ 不能递归调用 - ❌ 不能在纯函数(Pure Function)中使用 - 输入/输出参数必须匹配调用上下文 ### 三、最佳实践 1. **调试技巧** - 在中添加`Print String`节点并勾选`Screen Log` - 使用`Breakpoint`节点暂停执行 2. **性能优化** - 避免在频繁触发的(如`Tick`)中执行复杂运算 - 对编辑器使用异步执行: ```python # Python示例 unreal.EditorUtilityLibrary.run_async(lambda: execute_macro()) ``` 3. **安全规范** - 关键操作添加确认对话框: ```blueprint [Show Confirm Dialog] -> [Confirmed?] -> [执行危险操作] ``` - 修改资产前自动备份: ```python unreal.AssetToolsHelpers.get_asset_tools().backup_assets([asset_path]) ``` ### 四、示例场景 ```mermaid graph LR A[用户点击工具栏按钮] --> B{类型} B -->|编辑器| C[立即执行] B -->|蓝图| D[检查蓝图状态] D -->|已编译| E[游戏中实时运行] D -->|未编译| F[触发自动编译后运行] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值