在游戏开发中我们往往会遇到道具合成的需求,如果玩家自己一级一级的合成太过繁琐,何不直接一键合成他需要的材料,通过递归来完成计算,从初级材料一级一级的完成合成。以下是LUA开发的递归合成思路。
--itemId是需要计算的道具ID
--need_num 是需要itemId这个道具的数量
local function Itemfunc(self,itemId,need_num)
--这一步是去道具表去道具信息,如果没有就退出
local cfg = assemble_cfg[itemId]
if cfg == nil then
--如果走到这里说明已经走到了最低级的道具的下面一层,最低级的道具没有合成道具,所以表会返回nil,此时退出递归,提示道具不足 无法合成
return false
end
--如果有就去存道具的Data里面拿玩家目前拥有的该的道具数量,一般是服务器发过来的。
local num = BackpackData:GetInstance():GetUsedItemCount(cfg.material)
--然后用需要合成的道具数量乘以道具表里规定的合成需要数量 计算出玩家可以获得多少个道具。
local need_num = need_num * cfg.num
--然后用玩家自己以后的道具数量减去合成需要的道具数量,获得还缺少多少道具
local how_much = num - need_num
--如果大于0则存在把道具信息存在一个列表里,这样可以展示给玩家看,每个级别的道具消耗的数量。
if num > 0 then