チャプター 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

どうしてモジュールを使うの?
今回のゲームでスコアが増えたり減ったりする「当たり判定」は2か所にありました。一つはローカルプレーヤーのPlayerHitというスクリプトで、これは「ローカルスクリプト」。もう一つはGenerateTrophyで火の玉との当たり判定をしたところで、これは「サーバースクリプト」です。ローカルとサーバーの両方のスクリプトからアクセスできるようにするやり方の一つがこの「モジュール」を使うことです。このようにいろいろな「仕組み」(ロジックと言います)をモジュールに入れておくと、どこからでもアクセスできるのでとても便利です。
次にすすむ