DH-SRPG 四:单位管理与控制器
UnitManage是用于管理游戏中的Unit的节点。
它的功能囊括了:单位查找、单位移动战斗处理、游戏回合管理,单位行动顺序等。
在新建关卡时,可以直接在UnitManage节点下添加Unit节点。
UnitManage
回合部分
属性:
方法:
构成回合的方法并不复杂。
实现是 start 这个方法作为开始由 Scene 调用,这个方法实现会获取自己的所有子节点,也就是在场景编辑器中添加的unit和玩家挑选出战的那些unit.
start会将他们添加到行动列表里并完成信号的连接。然后调用settlement对unit进行排序再调用 cycle 开始回合的循环。
cycle 会获取下一个要行动的unit并让unit开始行动。
unit在结束行动时会发出 sction_end_signal 信号,我们让这个信号连接到 unit_action_end 方法,并在 cycle 方法中会再一次调用 cycle.这样就形成一个循环了。
get_next_unit 在获取到最后一个unit之后再调用时会调用 settlement 对行动列表行动顺序进行更新。
管理部分
属性:
在游戏中被击败的unit并不会直接被析构掉,而是保存到 cemetery 之中。
cemetery本身没有什么用,只是以后可能会有让unit再次战斗的技能才搞的。
方法:
可以通过多种方式获取unit
unit 在被击败时会调用这个方法来料理后事

Controllers
其实在调用 unit 的 start_action 时 unit 还会调用 controllers 的 unit_start_action,因为如果是 ai 的话,会很需要这个。而玩家就不需要了。
属性与方法
因为需要重写,所以很多方法都是 pass.
值得注意的是,控制器的 camp 属性。这个属性可以用于区分敌我(虽然unit可以攻击自己人)不过相同camp的unit在移动时是可以穿过的(也就是不会拦路),而不同的camp之间会互相拦路。

下一节我们将介绍一下单位Unit。
致歉:因为项目的更新随时都有可能会破坏原有的代码,您在看到此文时它可能已经不是最新的了,请以现在项目的具体情况为准。
欢迎大家给项目提Issues
项目地址:https://gitee.com/DH-DoveG/dh-srpg-demo