我想为我的模型/演员添加一些脚本。当加载新模型或更改脚本时,参与者会做出反应。
现在,我有一个基本 Lua 类,例如,它有一个 Update() 函数,每个模型/演员都应该重载这个函数。但是如何实施呢?主要问题是每个模型都需要一个唯一的类名称,...
我正在考虑一个表,其键值为 actorID(unique) 并且值将是从基类继承的类,但是当脚本重新加载时有点困难。
Objects[ActorID] = Model(paramater)
Objects[ActorID].Update = function() print("Update: actor 1") end
也许也可以为每个参与者创建一个新的 lua 状态。
我从 Leadwerks 引擎获得了灵感:http ://www.youtube.com/watch?v=z-EuS1EYk8o
如果有人知道一本关于游戏引擎脚本的好书,请告诉我
我想我明白了:
这是一些伪代码:
OnNewActorCreated:
//Add actor
Objects[param.ID] = createClass(baseclass)
//Check if this actor has a script to run.
if param.hasScript then
//Add the new ID to the script
Scripts[param.filename][param.ID]
Entity = Objects[param.ID]
doFile(param.filename)
Entity = nil
end
OnFileChanged:
foreach id in Scripts[changedfile] do
Entity = Objects[id]
dofile(changedfile)
Entity = nil
end
示例脚本:
//check if Entity is valid
if not Entity then
print("[Error] Entity is invalid")
else
function Entity:Update()
print(self.name)
end
end
可以工作;)