モデル/アクターにスクリプトを追加したいと思います。新しいモデルがロードされるか、スクリプトが変更されると、アクターが反応します。
今のところ、たとえばUpdate()関数を持つ基本Luaクラスがあり、各モデル/アクターはこの関数をオーバーロードする必要があります。しかし、それをどのように実装するのですか?主な問題は、各モデルにクラスの一意の名前が必要なことです...
キー値が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
動作する可能性があります;)