Lua (临时)解决循环require报错的技巧

版权声明:转载请保留该链接 https://blog.csdn.net/u013826918/article/details/86482494

ObjManager.lua

require "Obj"

ObjManager = {}

function ObjManager.SpawnObj(id)
	-- 创建并初始化Obj
	local obj = ObjectPool.Spawn(id)
	obj.Init()
end

function ObjManager.DespawnObj(go)
	-- body
end

...

Obj.lua

local ObjManager = require "ObjManager"

Obj = {}

function Obj.Init()
	-- 进行必要的初始化设置
end

function Obj.Update()
	-- 销毁的判断
	if condition then
		Obj.DestroySelf()
	end
end

function Obj.DestroySelf()
	ObjManager.DespawnObj(self)
end

...

会出现循环require的错误



改为以下形式

ObjManager.lua

...

function ObjManager.SpawnObj(id)
	-- 创建并初始化Obj
	local obj = ObjectPool.Spawn(id)
	
	-- 在这里创建Obje的自毁函数
	function obj.DestroySelf()
		ObjManager.Despawn(obj)
	end
	
	obj.Init()
end

...

Obj.lua


-- 删除这个函数,改为 ObjManager.lua 中创建
-- function Obj.DestroySelf()
-- 	 ObjManager.DespawnObj(self)
-- end

...

猜你喜欢

转载自blog.csdn.net/u013826918/article/details/86482494