私のエンジンはコンポーネントベースのエンティティシステムを内部で使用しており、スクリプト用にLuaにバインドしたいと考えています。
今、私はそれをタイピングするためのスクリプトを書く人々を救いたいと思います。C ++では、エンティティの位置を設定するには、次のようにします。
pEntity->GetComponent< CPoint >()->SetPos( Vector( X, Y ) );
つまり、Lua 1:1にバインドする場合は、次のことも行う必要があります。
ent:GetComponent( CP_POINT ):SetPos( 123, 456 )
しかし、正直に言って、エンティティの位置を設定するためだけに多くの文字を入力しますか?
私はそうは思わない、それが私がLuaからコンポーネントシステムを「隠した」理由です。
今、あなたがしていることは
ent:SetPos( 123, 456 )
コンポーネントのものは内部的に処理されます。ent:AddComponentやent:RemoveComponentなどを使用して、Luaのコンポーネントを手動で追加および削除することもできます。
今、これも完璧ではないようです:
エンティティメタテーブルは、すべてのコンポーネントのすべての機能を実行する必要があるため、乱雑になります
ネーミングの問題:
ent:SetJointMotorEnabled()
やはりちょっと悪いようです
スクリプトの快適性を危険にさらすことなく、コンポーネント関数のより良い命名体系をどのように見つけることができるかについてのアイデアはありますか?
ent:"Point":SetPos(...)
方法がない限り、これはほぼ最初の方法です。一般的なコンポーネントには2番目の方法を使用するのでしょうか?