饥荒mod制作教程--添加音效

本文详细介绍如何使用FMOD Designer创建游戏音效。从新建工程开始,逐步介绍声音文件的导入与命名规范、Banks设置及最终打包流程。通过实例演示了如何在游戏中正确调用这些音效。

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

打开 FMOD Designer,新建工程,命名,我这里叫blade_evolve_soundfx(别怪我太长,刚好在做这个)


删掉红框,将准备好的声音文件拖进来,并改名(声音文件和项目名一致就好,组名随便起一个)




找到banks,改名,也和项目名一样



到时候 播放这个声音文件的路径就是这个,


(把这个路径记好)



点这里就可以生成了



生成的两个文件***.fev **.fsb 拷到\sound里,

-----modmain---------


调用

inst.entity:AddSoundEmitter()

inst.SoundEmitter:PlaySound("blade_evolve_soundfx/brsoundfx/blade_evolve_soundfx")

<think>我们正在讨论《饥荒》模组开发中关于蝴蝶(prefab为"butterfly")的实体行为逻辑。用户询问了与蝴蝶相关的多个属性(product, respawntime, max, count, chance, evil)以及回调函数(cb和actionfailfn)的作用。 根据《饥荒》游戏模组开发的知识,蝴蝶是一种常见的生物,其行为由游戏代码定义。我们可以通过分析游戏源代码或模组开发经验来回答。 1. **属性解释**: - **product**: 当蝴蝶被击杀时掉落的物品。通常蝴蝶会掉落蝴蝶翅膀(butterflywings),有时也会掉落黄油(butter)。 - **respawntime**: 蝴蝶的重生时间。当一只蝴蝶被杀死后,经过这个时间(以游戏内的秒为单位),新的蝴蝶会在花朵附近生成。 - **max**: 在世界上同时存在的最大蝴蝶数量。 - **count**: 每次重生周期中生成的蝴蝶数量。 - **chance**: 生成蝴蝶的几率。通常与花朵相关,表示花朵生成蝴蝶的概率。 - **evil**: 如果设置为true,则蝴蝶会变成“邪恶”版本(如蝙蝠蝴蝶),通常在洞穴或噩梦周期中出现。 2. **回调函数**: - **cb**: 通常指“callback”,即回调函数。在蝴蝶的上下文中,可能指的是当某些事件发生时调用的函数。例如,当蝴蝶被生成时,可能会调用一个初始化函数来设置其行为。 - **actionfailfn**: 这是一个特定于动作失败时的回调函数。例如,当玩家尝试对蝴蝶执行某个动作(如捕捉)但失败时,会调用此函数。这可以用于播放特定的动画或声音,或者执行其他逻辑。 在模组开发中,我们可能会修改这些属性或回调函数来改变蝴蝶的行为。例如,我们可以让蝴蝶掉落更多物品,或者改变其重生逻辑。 下面是一个示例,展示如何在模组中修改蝴蝶的属性: ```lua --modmain.lua中 AddPrefabPostInit("butterfly", function(inst) -- 修改掉落物:总是掉落两个蝴蝶翅膀,并且提高掉落黄油的几率 if inst.components.lootdropper then inst.components.lootdropper:SetLoot({"butterflywings", "butterflywings"}) inst.components.lootdropper:AddChanceLoot("butter", 0.2) -- 20%几率掉落黄油 end -- 修改重生时间(注意:重生时间通常由花朵控制,这里只是示例) -- 实际上,蝴蝶的重生是由花朵的组件控制的,所以直接修改蝴蝶的重生时间可能无效。 -- 但我们可以通过其他方式影响重生,比如修改花朵的重生设置。 end) ``` 关于回调函数,我们可以这样使用: ```lua AddPrefabPostInit("butterfly", function(inst) -- 当蝴蝶被生成时,执行一些操作 if not inst:HasTag("my_mod_tag") then inst:AddTag("my_mod_tag") -- 例如,打印一条日志 print("A butterfly has been created!") end -- 修改动作失败回调 local old_actionfail = inst.components.workable.actionfailfn inst.components.workable.actionfailfn = function(inst, worker, action, ...) -- 当动作失败时,先执行原来的回调 if old_actionfail then old_actionfail(inst, worker, action, ...) end -- 然后我们添加额外的行为,比如播放一个特殊的音效 if action == ACTIONS.NET then -- 假设是用网捕捉失败 inst.SoundEmitter:PlaySound("dontstarve/characters/wendy/mourning/loud") end end end) ``` 注意:以上代码仅为示例,实际游戏中的回调函数可能会有所不同,需要根据具体组件来调整。 **引用说明**:以上解释基于《饥荒》游戏模组开发的一般知识,具体实现细节可能因游戏版本而异。关于蝴蝶的属性,可以参考游戏源代码中`prefabs/butterfly.lua`文件,以及花朵的重生机制(在`prefabs/flower.lua`等文件中)[^1][^2]。 §§相关问题§§ 1. 如何修改蝴蝶的重生机制,使其在特定条件下生成? 2. 如何为蝴蝶添加新的行为,比如让它主动攻击玩家? 3. 在《饥荒》模组开发中,如何调试prefab的回调函数?</think>### 理解《饥荒Mod开发中的蝴蝶(butterfly)实体逻辑 在《饥荒Mod开发中,`butterfly`预制体(prefab)的行为逻辑主要通过以下属性和回调函数控制: #### 核心属性解析 1. **product** - 定义蝴蝶被捕捉/击杀后的掉落物 - 默认值:`"butterflywings"`(蝴蝶翅膀) - 特殊掉落:`"butter"`(黄油,低概率) - 修改示例: ```lua inst.components.lootdropper:AddChanceLoot("butter", 0.02) -- 2%黄油概率 ``` 2. **respawntime** - 蝴蝶重生时间(单位:游戏天数) - 默认值:`TUNING.BUTTERFLY_SPAWN_TIME`(约1天) - 修改逻辑: ```lua AddPrefabPostInit("flower", function(inst) -- 通过花朵控制重生 inst.components.spawner:Configure("butterfly", TUNING.BUTTERFLY_SPAWN_TIME) end) ``` 3. **max/count** - `max`:世界最大蝴蝶数量 - `count`:单次生成数量 - 默认配置: ```lua TUNING.BUTTERFLY_MAX = 20 TUNING.BUTTERFLY_SPAWN_COUNT = 1 ``` 4. **chance** - 花朵生成蝴蝶的概率 - 默认值:`0.1`(10%概率) - 修改示例: ```lua inst:AddComponent("spawner") inst.components.spawner:SetSpawnChance(0.3) -- 提升至30% ``` 5. **evil** - 标记是否为邪恶变种(洞穴/噩梦周期) - 特殊行为:被击杀时生成噩梦燃料 - 检测逻辑: ```lua if inst:HasTag("evil") then inst.components.lootdropper:AddChanceLoot("nightmarefuel", 1.0) end ``` #### 回调函数作用 1. **cb (通用回调)** - 通常指向`OnSpawnedFn`函数 - 在实体生成时触发初始化逻辑 - 示例:设置蝴蝶移动模式 ```lua local function OnSpawned(inst) inst.components.locomotor:SetAllowPlatformHopping(true) inst:AddTag("flying") end ``` 2. **actionfailfn** - 处理玩家动作失败时的逻辑 - 常见于`workable`组件(捕捉动作) - 示例:捕捉失败时蝴蝶逃跑 ```lua inst.components.workable:SetOnWorkActionFail(function(inst, worker) if worker:HasTag("player") then inst:PushEvent("flyaway") -- 触发逃跑事件 end end) ``` #### 完整行为流程 ```mermaid graph LR A[花朵生成] -- chance概率 --> B[创建蝴蝶实体] B --> C[执行cb初始化] C --> D[随机移动] D -- 玩家靠近 --> E{触发动作} E -- 捕捉成功 --> F[掉落product] E -- 捕捉失败 --> G[执行actionfailfn] F --> H[销毁实体] G --> I[触发逃跑] H & I --> J[respawntime后重生] ``` ### 调试技巧 1. **实时监控** 在`modmain.lua`添加调试代码: ```lua AddPrefabPostInit("butterfly", function(inst) inst:ListenForEvent("flyaway", function() print("蝴蝶逃跑!") end) end) ``` 2. **属性覆盖** 修改全局配置: ```lua TUNING.BUTTERFLY_SPAWN_TIME = 0.5 -- 半日重生 TUNING.BUTTERFLY_SPAWN_CHANCE = 0.5 ``` 3. **自定义回调** 扩展动作失败处理: ```lua local old_actionfail = inst.components.workable.actionfailfn inst.components.workable.actionfailfn = function(...) old_actionfail(...) -- 保留原逻辑 -- 添加新逻辑:播放特殊音效 TheFocalPoint.SoundEmitter:PlaySound("dontstarve/creatures/butterfly/fly") end ``` > 提示:蝴蝶的核心逻辑位于游戏源文件`scripts/prefabs/butterfly.lua`,可通过反编译工具查看完整实现细节[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值