传奇生物文档

对MOD开发相关的说明


connect与signal

<p><strong>信号是一种回调机制。是观察者设计模式的一个实现,配合connect函数使用,是所有MODDER必备的技巧</strong></p> <p>信号是从对象发出消息的工具,其他对象也可以对此做出反应。要为一个类创建自定义信号,请使用 <strong>signal</strong> 关键字。</p> <p>以下是关于信号使用的一个范例: 假设我们有2个角色实例,一个是厨师(chef),一个是食客(customer)</p> <pre><code class="language-python">#厨师实例相关代码 extends Chara #定义一个菜品准备就绪的信号 signal food_ready #做菜函数 func cook(): #做菜相关逻辑代码。。。。。。 #菜做好后,广播这个信号,并附带了俩参数,表明是哪个顾客的哪个菜做好了 emit_signal("food_ready", foodName, customerName)</code></pre> <pre><code class="language-python">#顾客实例相关代码 extends Chara #取菜函数,参数从信号中获得 func getFood(foodName, customerName): #取菜相关逻辑代码。。。。。。 </code></pre> <pre><code class="language-python">#系统相关代码 extends Node func _ready(): #获得顾客实例 var customer = xxxxx... #获得厨师实例 var chef = xxxxx.... #将厨师的[food_ready]信号与customer实例的getFood()函数连接,这样厨师在广播这个信号后,将会自动执行customer的getFood()函数进行取菜 chef.connect("food_ready", customer, "getFood")</code></pre> <p>以上就是有关connect与signal搭配使用的一个完整示例,在传奇生物中,有许多预先定义好的信号供我们使用,例如:</p> <pre><code class="language-python">#将sys.main对象的"onBattleStart"信号与自身连接,当战斗开始时,会广播此信号,此时自身就会执行doIt函数 sys.main.connect("onBattleStart", self, "doIt")</code></pre>

页面列表

ITEM_HTML