関数を含むワークスペースに埋め込まれたスクリプト ファイルがあります。ワークスペースの子オブジェクトに埋め込まれたスクリプト ファイルからこれらの関数を呼び出したいと思います。これらの関数を複数のスクリプト ファイルにコピー アンド ペーストする必要はありません。可能であれば、オブジェクト指向のアプローチが最適だと考えました。
7 に答える
_G の代わりに、グローバルに使用可能なテーブルsharedを使用することもできます。Sharedは_G と同じように使用されますが、変数識別子の前に「shared」を指定する必要があります. Shared は次のコンテキストで使用されます。
shared["variablename"] = value
グローバル スタックの _G. 共有の使用例:
スクリプト 1
shared["rprint"] = function(array) for i,v in pairs(array) do print(i, v) end end
スクリプト 2
repeat wait() until shared["rprint"]
shared.rprint({"Hello, ", "How", " are", " you?"})
このスクリプトの出力は、"Hello, How are you?" になります。
最も簡単な方法は、_Gまたは共有を使用することです。
1つのスクリプトで、
_G.myFunction = function(Arguments)
-- blah
end
別のスクリプトでは、このコードを使用します。
repeat wait() until _G.myFunction ~= nil
_G.myFunction()
これは、_Gの代わりに、共有されたグローバルテーブルでも機能します。
前に言われたことは知っていますが、通常の_Gまたはsharedを使用してアクセスしてください。
スクリプト 1
_G.myFunction = function()
print("Hello, myFunction!")
end
スクリプト 2
repeat wait() until _G.myFunction()
_G.myFunction()
出力
こんにちは、myFunction!
関数をグローバルにすることができます。1 つのスクリプトで次のようにします。
_G.myFunction = function() print("Hello World") end
別のスクリプトで次のようにします。
repeat wait() until myFunction myFunction()
関数を _G と定義すると、スクリプトが実行されて関数が割り当てられるのを待つ必要があり、_G を指定しなくても関数を呼び出すことができます。
ROBLOX の更新により、_G 内のアイテムにアクセスするたびに _G をインデックス化する必要があるため、これは機能しません。
上記で見たように、ROBLOX でも dofile() を使用することはできません。
質問への回答: _G.MyFunction = function(parameters) end を追加して、グローバル テーブル _G に 1 つのスクリプトで関数を作成する必要があります。別のスクリプトでは、_G テーブル内の _G.MyFunction() にアクセスする必要があります。
ROBLOX スクリプターによく見られる問題は、関数が作成される前に _G 内で関数にアクセスしようとすることです。これを解決する簡単な方法は、Camoy の投稿から提案されているように、作成されるまで待機を追加することです。
repeat wait() until _G.MyFunction()
ありがたいことに追加されたモジュールスクリプトを使用できます。そこに関数を配置して、他の場所で呼び出して使用することができます!
関数をグローバルにすることができます。1 つのスクリプトで次のようにします。
_G.myFunction = function() print("Hello World") end
別のスクリプトで次のようにします。
repeat wait() until myFunction myFunction()
関数を _G と定義すると、スクリプトが実行されて関数が割り当てられるのを待つ必要があり、_G を指定しなくても関数を呼び出すことができます。