You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Actor蓝图中使用Level蓝图变量?Actor如何控制Level蓝图变量?

在Actor蓝图中访问Level蓝图变量 & 回合制流程实现

针对你的问题,我分两部分来解答,先讲核心的Level变量访问方法,再结合你的回合制流程给出具体实现步骤:

一、Actor蓝图获取/设置Level蓝图变量的核心方法

要让Actor操作Level蓝图的变量,关键是先拿到Level蓝图的引用,再对公开变量进行读写:

  1. 先把Level蓝图的变量设为公开

    • 打开Level蓝图,创建你需要的变量(比如你的turn变量)
    • 在变量的Details面板里,勾选「Public」(或者「Editable」,确保外部蓝图能访问)
  2. 在Actor蓝图中获取Level蓝图引用
    在Actor的Event Graph里,通过以下节点链获取Level蓝图对象:

    Get World → Get Level Blueprint
    

    拿到这个引用后,你就可以直接调用Get [变量名]Set [变量名]节点来读写Level里的变量了。

二、你的回合制流程具体实现步骤

结合你说的ActorOnClicked → 移动Actor → 结束回合(修改Level的turn变量)流程,具体操作如下:

1. Level蓝图准备

  • 创建一个变量CurrentTurn(类型根据需求选,比如Integer代表回合数,或者Enum代表当前玩家),勾选Public,设置初始值(比如1)

2. Actor蓝图逻辑实现

  • 绑定点击事件:在Actor的Event Graph里,右键搜索并添加Event Actor OnClicked节点,这是点击Actor时触发的事件。
  • 处理移动逻辑:在Event Actor OnClicked后面连接你的移动逻辑——比如用Set Actor Location直接瞬移,或者用Add Movement Input配合Character Movement组件实现平滑移动。如果需要等待移动完成再结束回合,可以用On Movement Completed回调(如果用的是Character类),或者加个Delay节点(根据移动距离估算时间)。
  • 修改Level的回合变量:移动完成后,通过Get World → Get Level Blueprint拿到Level蓝图引用,然后调用Set CurrentTurn节点,把变量更新(比如CurrentTurn + 1,或者切换玩家枚举值)。

可选优化:用事件分发器降低耦合

如果你的项目后期逻辑变复杂,不想让Actor直接依赖Level蓝图的变量,可以用事件分发器的方式:

  • 在Level蓝图里创建一个事件分发器OnTurnEnded,可以带参数(比如新的回合值)
  • Actor在移动完成后,触发这个事件分发器(通过Level蓝图引用调用Call OnTurnEnded
  • Level蓝图里绑定OnTurnEnded事件,在回调里修改turn变量

这种方式让Actor和Level的逻辑解耦,更易维护。

内容的提问来源于stack exchange,提问作者dbld

火山引擎 最新活动