Robloxのスクリプトの違い
koyoshi.icon
Copilot.icon(クイック応答)
いい質問ですね!Robloxでは「Script」と「LocalScript」はどちらもLuaで書かれたスクリプトですが、実行される環境と目的が大きく異なります。それぞれの違いをわかりやすく整理してみましょう👇
🧠 Script(サーバースクリプト)
特徴:
サーバー側で実行される
ゲーム全体に影響を与える処理(例:データ保存、NPCの動作、ゲームルールの管理など)に使用
セキュリティが高い:クライアントから直接改ざんされにくい
主な使用場所:
ServerScriptService
Workspace
Model(ただしサーバーで動作する場所)
例:
code:lua
game.Players.PlayerAdded:Connect(function(player)
print(player.Name .. " がゲームに参加しました")
end)
🎮 LocalScript(ローカルスクリプト)
特徴:
クライアント側(プレイヤーのデバイス)で実行
UIの操作、カメラの制御、プレイヤーの入力処理などに使用
他のプレイヤーには影響しない(個人の画面や操作に限定)
主な使用場所:
StarterPlayerScripts
StarterCharacterScripts
StarterGui
Tool
LocalScriptがサポートされているGUIやプレイヤー関連の場所
例:
code:lua
local player = game.Players.LocalPlayer
print("こんにちは、" .. player.Name .. "さん!")
🚧 注意点
table:_
機能 Script LocalScript
プレイヤーの入力取得 ❌ ✅
UIの操作 ❌ ✅
データストアの使用 ✅ ❌
他プレイヤーへの影響 ✅ ❌
game.Players.LocalPlayerの使用 ❌ ✅
もし「この処理はどっちで書くべき?」と迷ったら、「誰に影響を与えるか」を考えると判断しやすいですよ。サーバー全体 → Script、プレイヤー個人 → LocalScript。
どんなスクリプトを書こうとしてるのか、よかったら教えてください!それに合わせてもっと具体的なアドバイスもできますよ 😊
koyoshi.icon
スクリプトの置き場所による制限はありますか?
Copilot.icon(クイック応答)
あります!Robloxでは「Script」や「LocalScript」を正しい場所に置かないと実行されない、またはエラーになることがあります。これはセキュリティや動作の仕組みによる制限です。以下に、置き場所による制限をわかりやすくまとめました👇
🧠 Script(サーバースクリプト)の置き場所
有効な場所(サーバーで実行される):
ServerScriptService ✅
Workspace ✅
Model ✅
ReplicatedStorage ✅(ただしイベントや関数の定義用)
無効な場所(実行されない):
StarterGui ❌
StarterPack ❌
StarterPlayerScripts ❌
StarterCharacterScripts ❌
🎮 LocalScript(ローカルスクリプト)の置き場所
有効な場所(クライアントで実行される):
StarterPlayerScripts ✅(プレイヤーがゲームに入ったときに実行)
StarterCharacterScripts ✅(キャラクターに関連する処理)
StarterGui ✅(UI操作など)
Tool ✅(ツール使用時の処理)
LocalScriptがサポートされているGUIオブジェクト ✅
無効な場所(実行されない):
ServerScriptService ❌
Workspace(ただしプレイヤーのキャラクター内ならOK) ❌
ReplicatedStorage ❌(保存はできるが実行されない)
ReplicatedStorageはサーバーとクライアントの両方からアクセス可能な共有領域です。ここにスクリプトを置いても直接実行はされませんが、ModuleScriptを置いて読み込む用途には最適です。 ✅ まとめ
table:_
スクリプトタイプ 実行される場所 実行されない場所
Script ServerScriptService, Workspace StarterGui, StarterPlayerScripts
LocalScript StarterGui, StarterPlayerScripts ServerScriptService, ReplicatedStorage
もし「このスクリプト、どこに置けばいい?」と迷っているなら、やりたいことを教えてくれれば一緒にベストな配置を考えますよ!
他に注意すべきスクリプトの制限はありますか?
あります!Robloxのスクリプトには、置き場所以外にも注意すべき制限やルールがいくつかあります。これを知らずに書くと「スクリプトが動かない」「エラーが出る」などのトラブルにつながるので、以下のポイントを押さえておくと安心です👇
⚠️ よくあるスクリプト制限・注意点
1. LocalScriptはサーバーの情報に直接アクセスできない
LocalScriptでは game.Workspace や ServerScriptService の一部にアクセスできないことがあります。
2. LocalPlayerはLocalScriptでしか使えない
game.Players.LocalPlayer は LocalScript限定。Scriptで使うとエラーになります。
3. 親(Parent)が設定されていないとスクリプトは実行されない
スクリプトが nil の親を持っていると、自動的に無効化されます。
例えば、Script.Parent = nil の状態では動きません。
4. ModuleScriptは直接実行されない
ModuleScriptは関数やデータを定義するためのもので、他のスクリプトから require() で呼び出す必要があります。
5. スクリプトの実行順序に注意
プレイヤーがゲームに参加する前にスクリプトが実行されると、LocalPlayer や Character がまだ存在していないことがあります。
PlayerAdded や CharacterAdded イベントを使って、タイミングを調整しましょう。
6. セキュリティ上の制限
クライアント側(LocalScript)で重要な処理(データ保存、ゲームルールの変更など)を行うと、改ざんされるリスクがあります。
こういった処理は必ず Script(サーバー側)で行うべきです。
🧪 例:RemoteEventの使い方
code:lua
-- サーバー側 Script
local event = Instance.new("RemoteEvent", game.ReplicatedStorage)
event.Name = "JumpEvent"
event.OnServerEvent:Connect(function(player)
print(player.Name .. " がジャンプしました!")
end)
-- クライアント側 LocalScript
local event = game.ReplicatedStorage:WaitForChild("JumpEvent")
event:FireServer()
こうした制限を理解しておくと、スクリプトが思った通りに動かないときの原因がすぐに見つかりますよ。もし今書いてるスクリプトで困ってることがあれば、コードを見せてくれたら一緒にチェックします!