多くの開発者にとって、Roblox のスクリプトに適応する基本的な課題は、ファイルの場所と Script.RunContext プロパティの重要性です。スクリプトの種入力、エクスプローラーの場所、実行コンテキストによって、スクリプトの動作は大幅に異なる可能性があります。特定のメソッド呼び出しが失敗する、エクスペリエンスのオブジェクトがアクセスできない、またはスクリプトが実行されない可能性があります。
この複雑さの理由は、Roblox の経験がデフォルトでマルチプレイヤーであるためです。スクリプトには、サーバー上でのみ実行、クライアント上でのみ実行、または両方を共有する機能が必要です。Roblox プラットフォームの時間経過での進化は、状況をさらに複雑にしました。
スクリプトタイプ
Roblox には 3種類のスクリプトがあります:
- Script - 場所と Script.RunContext プロパティに応じて、サーバーまたはクライアントで実行するコード。
- LocalScript - クライアント上でのみ実行するコード。実行コンテキストはありません。
- ModuleScript - 他のスクリプトで再利用できるコード。実行コンテキストはありません。
When you create a Script , its default run context is Legacy , meaning that it a) はサーバー側のスクリプトであり、b) は、例えば Workspace または ServerScriptService のように、サーバーコンテナにのみ実行することを意味します。
- スクリプトの実行コンテキストを Server に変更すると、今 ReplicatedStorage でも実行できますが、それは推奨されません。その場所のコンテンツはクライアントにレプリケートされるため、サーバー側のスクリプトには悪い場所です。
- スクリプトの実行コンテキストを Client に変更すると、ReplicatedStorage で実行できます。また、StarterCharacterScripts や StarterPlayerScripts でも実行できます。スターターコンテナはクライアントにコピーされますが、オリジナルのスクリプト と のコピーが実行され、望ましくありません。
スクリプト実行コンテキストを変更するには、エクスプローラー で選択し、プロパティ ウィンドウの値を変更します。

推奨事項
および 値を使用すると、スクリプトの実行方法の不明確性が排除され、プロジェクトを整理するのに役立つ可能性があります。非デフォルトの RunContext 値の最良の使用ケースは次のとおりです:
- ReplicatedStorage または ReplicatedFirst から実行したいクライアントスクリプト。
サーバーとクライアントスクリプト間でコードを共有するには、ModuleScripts を ReplicatedStorage で使用します。
使用 LocalScripts 在 StarterCharacterScripts , StarterPlayerScripts , StarterGui , そして StarterPack .
スクリプトの場所
場所 | 説明 :--- | :--- ワークスペース | ゲームワールドを表現します。この場所は、オブジェクトに直接付属して動作を制御するサーバースクリプトに最適です。ReplicatedFirst | 他の何よりも先にクライアントに複製するオブジェクトを含みます。この場所は、ロードスクリーンを表示するために必要な絶対最小限のオブジェクトとクライアントスクリプトのセットに最適です。ReplicatedStorage | クライアントとサーバーの両方に複製されるオブジェクトを含みます。この場所は、サーバーとクライアントの両方で使用したい Class.ModuleScript\|ModuleScripts に最適です。Class.LocalScript\|LocalScripts この場所から実行しないが、Class.Script\|Scripts は、Client の実行コンテキストで実行する。ServerScriptService | サーバースクリプトサービス | サーバースクリプトを含むこの場所は、ゲームロジックやクラウドストレージなど、サーバー側の機能やオブジェクトにアクセスする必要があるスクリプトに最適です。ServerStorage | サーバー側のオブジェクトを含みます。この場所は、エクスペリエンスに参加するとすぐにクライアントにレプリケートする必要がない大きなオブジェクトに最適です。スクリプトはこの場所から実行しませんが、サーバー側の Class.ModuleScript\|ModuleScripts をここに保存できます。StarterPlayer.StarterCharacterScripts | キャラクターがスポーンするときに実行する Class.LocalScript\|LocalScripts が含まれています。StarterPlayer.StarterPlayerScripts | プレイヤーがエクスペリエンスに参加すると実行される一般的な目的の Class.LocalScript\|LocalScripts が含まれています。StarterGui | ゲームをロードするとクライアントが表示する GUI 要素を含みます。Class.LocalScript\|LocalScripts この場所から走ることができます。この場所は、ボタン、メニュー、ポップアップなど、ゲームのユーザーインターフェイスを変更するスクリプトに最適です。スターターパック | 一般的には Class.Tool\|Tools のみを含みますが、プレイヤーバックパックの設定に Class.LocalScript\|LocalScripts を含めることもできます。
この画像は、どのエクスプローラーウィンドウの場所にクライアントスクリプトを含めることができるかを示しています。覚えておいてください、ReplicatedFirst と ReplicatedStorage には、Scripts に RunContext の Client を含めることができますが、Starter[] コンテナは LocalScripts を使用する必要があります。

プロジェクトの構造の例
植物 参照プロジェクトは、大規模で複雑なエクスペリエンスでコードを整理する方法を示します。
注目すべき点は、コードの大部分を再利用可能な ModuleScripts として ReplicatedStorage および ServerStorage に保存する方法です。