チャプター 5
Step 02
スコアを管理するモジュールを作る
スコアを管理をするモジュールを書く
スコアを「管理する人」が必要なので、「スコア管理モジュール」というスクリプトを作ります。ここにスコアとスコアを計算する仕組みを入れます。➊ エクスプローラーでServerScriptServiceに行ってModuleScriptを追加します。
❷ 名前をScoreModuleに変更します。
❸ ScoreModuleに次のコードを入れてください。
local ScoreModule = {}
--最初のスコアはゼロ
local score = 0
--ScoreChangedEventを取得する
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScoreChangedEvent = ReplicatedStorage:WaitForChild("ScoreChangedEvent")
--スコアを教えてください~
function ScoreModule.getScore()
return score
end
--★サーバーのスコア変更はこれでやる
function ScoreModule.updateScore(points)
score = score + points
ScoreChangedEvent:FireAllClients(score) --イベント発火!
end
--★クライアント(Player)のスコア更新はこれでやる
ReplicatedStorage:WaitForChild("ScoreChangedEvent").OnServerEvent:Connect(function(player, points)
ScoreModule.updateScore(points)
end)
return ScoreModule
--最初のスコアはゼロ
local score = 0
--ScoreChangedEventを取得する
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScoreChangedEvent = ReplicatedStorage:WaitForChild("ScoreChangedEvent")
--スコアを教えてください~
function ScoreModule.getScore()
return score
end
--★サーバーのスコア変更はこれでやる
function ScoreModule.updateScore(points)
score = score + points
ScoreChangedEvent:FireAllClients(score) --イベント発火!
end
--★クライアント(Player)のスコア更新はこれでやる
ReplicatedStorage:WaitForChild("ScoreChangedEvent").OnServerEvent:Connect(function(player, points)
ScoreModule.updateScore(points)
end)
return ScoreModule
どうしてモジュールを使うの?
今回のゲームでスコアが増えたり減ったりする「当たり判定」は2か所にありました。一つはローカルプレーヤーのPlayerHitというスクリプトで、これは「ローカルスクリプト」。もう一つはGenerateTrophyで火の玉との当たり判定をしたところで、これは「サーバースクリプト」です。ローカルとサーバーの両方のスクリプトからアクセスできるようにするやり方の一つがこの「モジュール」を使うことです。このようにいろいろな「仕組み」(ロジックと言います)をモジュールに入れておくと、どこからでもアクセスできるのでとても便利です。
ここまでの完成版はこちら!