スカベンジャーハント

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

The スカベンジャーハント 開発者モジュール は、プレイヤーにエクスペリエンスを探索するためのゲーム化された方法を提供し、場プレース全体にオーガニックに紹介します。プレイヤーの進行状況は持続的であり、スカベンジャーハント はセッション間で続けられます。

モジュール使用

インストール

エクスペリエンスで ScavengerHunt モジュールを使用するには:

  1. 从 the ビュー タブで、ツールボックスを開き、 クリエイターストア タブを選択します。

    Toolbox toggle button in Studio
  2. モデル ソートが選択されていることを確認してから、 すべてを表示 ボタンをクリックして、 カテゴリ のための 1>ボタン1> をクリックします。

  3. デバッグモジュール タイルを見つけてクリックします。

  4. 宝さがし モジュールを見つけ、クリックするか、3D ビューにドラッグアンドドロップします。

  5. In the Explorer window, move the entire ScavengerHunt model into ServerScriptService . エクスペリエンスを実行すると、モジュールは各サービスに分配され、実行を開始します。

トークンを使用する

スカベンジャーハントモジュールは、トークン を使用して、プレイヤーが検索し、集めるアイテムをアイテムとして提供します。モジュールには、3D 世界に配置できるトークンモデルが 1 つあります。

  1. モジュールのメインフォルダの ワークスペース フォルダ内の トークン1 メッシュを見つけます。

  2. 移動 トークン1 到最上レベルの ワークスペース 階層に移動し、必要な場所に配置します。

  3. トークンに ユニークな名前 を与えます。この名前は、モジュールが各プレイヤーが集めたトークンを追跡する方法です。

  4. トークンを追加するには、既存のトークンを複製し、ユニークな名前を付けます。

バンドルされたメッシュトークンを使用したくない場合は、Model または BasePart のいずれかが機能します。ただし、次のクリテリオに従っている必要があります:

  • オブジェクトには、 CollectionService タグの ScavengerHuntPart があります。望む場合、モジュールが使用する CollectionService タグ名は、 2> токенタグ2> を設定して、 5>Server5> 呼び出しで変更できます。

  • オブジェクトには、StringValue の子が含まれており、トークンが集められたときに「flavor text」を表示するように設定されています。

    モデル
    メッシュパーツ

領域を使用する

領域はトークンと若干異なります。大きなエリアは、プレイヤーが入ると「収集」としてマークされます。また、プレイヤーが領域を離れると、フレーバーテキストモーダルが自動的に再起動し、領域自体がワークスペースから削除されます。

  1. ブロックや球など、地域の周りに固定部分を作成します。モジュールは、プレイヤーが地域と物理的に衝突しないようにランタイムで CanCollide プロパティを自動的に無効にします。

  2. ユニークな名前を付けてください。これは、モジュールが入力する各プレイヤーの領域を追跡する方法です。

  3. パーツのプロパティの タグ セクション、または Studio の タグエディタ を使用して、タグを ScavengerHuntPart に適用して、1> Class.CollectionService1> がそれを検出するよう

  4. StringValue インスタンスを含め、領域を入力すると、「flavor text」を表示するようにします。

構成

モジュールはほとんどの使用ケースに対応するようにプリコンフィグされていますが、簡単にカスタマイズできます。たとえば、トークンの回転速度を変更し、モーダル情報メッセージをカスタマイズするなど:

  1. In StarterPlayerScripts で、新しい LocalScript を作成し、 ConfigureScavengerHunt に名前を変更します。

  2. 新しいスクリプトに以下のコードを挿入します。

    ローカルスクリプト - スカベンジャーハントを構成する

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
    ScavengerHunt.configureClient({
    infoModalText = "Welcome to my Scavenger Hunt!",
    completeModalText = "Thanks for playing my Scavenger Hunt!",
    tokenRotationSpeed = 60,
    })

コレクションイベント

プレイヤーがトークンを集めたり、地域に入ったりするたびに、集めたイベントが発動します。このイベントは、Script サーバー側から聞くことができ、Player がトークンや入力した地域に衝突したときに受信します。接続された関数は、

同様に、プレイヤーが すべて のトークンを集めたり、 すべて のタグ付きの領域に入ると、すべてを集めたイベントが発動し、接続された関数は 1> Class.Player1> を使用して報��

スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)

カスタムGUI

このモジュールは、デフォルトの GUI をカスタマイズするためのいくつかのオプションを示しますが、代わりにカスタム GUI エレメントを表示することをオプトアウトできます。

useCustomModals が true で設定された createClient 機能の 1> showInfoModal1> イベントは、プレイヤーがトークントラッカーを有効にするたびに発動します。同様に、4> showCompleteModal4>

ローカルスクリプト

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- カスタム情報モーダルを表示
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- カスタム完全モーダルを表示
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

GUI の可視性

デフォルトでは、スカベンジャーハントは ScreenGuisCoreGuis (プレイヤーリストを除く) のすべての Class.CoreGui|CoreGuis を非表示にします。2> hideOtherGuis2>

ローカルスクリプト

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- 隠されないような画面GUIを作成
local specialGuiInstance = Instance.new("ScreenGui")
-- スカベンジャーハントGUI の上にある画面GUIを描画する
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- GUI にテキストラベルを追加する
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Remains visible when displaying modals"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- すべての開発者が定義した画面GUIを隠す
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance.Name == "ScavengerHunt" and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- 特定のコアGUIを隠す
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- 隠されていたすべての開発者が定義した画面GUIを表示
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- 隠されていた特定のコアGUIを表示
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

API リファレンス

機能

配置する

client(config: table ) を構成する

Class.LocalScript テーブルの次のキー/値を通じて、デフォルトのクライアント側の設定オプションをオーバーライドします。この関数は LocalScript からのみ呼び出されることができます。

キー説明デフォルト
autoDismissTimeモーダルが自動的に終了するまでの秒数。0 を設定して無効化効にします。20
closeModalGamepadゲームパッドボタンは、モーダルを閉じるために使用されます (Enum.KeyCode).ButtonA
closeModalKeyboardモーダルを閉じるために使用されるキーボードのキー ( Enum.KeyCode )。E
completeModalTextスカベンジャーハントが完了した後に表示されるモーダルにテキストを表示する。「参加してくれてありがとう!」
infoModalTextトークントラッカーをクリックした後に表示するモーダルにテキストを表示します。「ハントを完了するためにすべてのトークンを見つける」
tokenRotationSpeedトークンが回転する速度、毎秒度です。0 を設定して回転を防止します。20
nextArrowImage現在のモーダルページの後に表示するモーダルページの多くがあることを示す画像。「rbxassetid://8167172095」
openTokenTrackerGamepadトークントラッカーを有効にすると、ゲームパッドボタンを使用してモーダルを表示します (Enum.KeyCode)。ButtonY
openTokenTrackerKeyboardトークントラッカーを有効にすると、モーダルが表示されるようにキーボードのキーを使用します (Enum.KeyCode)。Y
openTokenTrackerGamepadButtonImageトークントラッカーを有効にするゲームパッドボタンの画像。「rbxassetid://8025860488」
regionIcon領域に入るときにトークントラッカーの隣に表示されるアイコン。「rbxassetid://8073794624」
tokenIconトークンを集めると、トークントラッカーの隣に表示されるアイコン。「rbxassetid://8073794477」
tokenTrackerPositionSmallDevice小さなデバイス ( UDim2 ) のトークントラッカー UI の位置。(1、0、0、84)
tokenTrackerPositionLargeDeviceタブレットや PC のような大きなデバイスのトークントラッカー UI の位置UDim2(1、0、1、-16)
useRegionsトークン ではなく、地域 を使用してください。
ローカルスクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.configureClient({
infoModalText = "Welcome to my Scavenger Hunt!",
completeModalText = "Thanks for playing my Scavenger Hunt!",
tokenRotationSpeed = 60,
navigationBeam = {
lightEmission = 1
},
modal = {
textSize = 14
},
})

Server を構成する

Server(config: table ) を構成する

concept テーブルの次のキー/値を介して、デフォルトのサーバー側の構成オプションをオーバーライドします。この関数は Script からのみ呼び出すことができます。

キー説明デフォルト
tokenTagスカベンジャーハントで使用されるすべてのトークンまたは領域を見つけるために CollectionService によって使用されるタグ。「スカベンジャーハントパーツ」
datastoreNameスカベンジャーハントで使用される DataStore の名前。「スカベンジャーハントトークン」
resetOnPlayerRemovingユーザーがエクスペリエンスを終了すると、ユーザーの進行状況をリセットします。スカベンジャーハントをテスト中に進行状況を保存することなく便利です。
スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.configureServer({
tokenTag = "GreenGem",
})

無効化する

無効化()

スカベンジャーハントのためのすべての UI を非表示にし、すべての入力イベントの聞き取りを切断し、プレイヤーが地域と交流するのを防止します。この関数は Script からのみ呼び出すことができます。

スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.disable()

有効化する

有効化()

スカベンジャーハントの UI をすべて表示し、すべての入力イベントのリスナーを接続し、プレイヤーがトークンを集め、領域とインタラクトすることを許可します。この機能は Script からのみ呼び出すことができます。

スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.enable()

イベント

収集した

プレイヤーがトークンと衝突したり、地域に入ると、接続された関数は Player を受信します。この接続された関数は、トークンと衝突したり、地域に入ったり、共有しているトークンの名前と入力した地域との名前を受信します。このイベントは、Script でのみ接続できます。

パラメータ
プレイヤー: Playerトークンと区域を入力したユーザー。
項目名: string衝突したトークンの名前または入力された領域。
収集した合計: numberユーザーが表示されている player が代表するトークンの合計数。
スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)

すべての収集

プレイヤーがすべてのトークンを集めたり、スカベンジャーハントのすべての領域に入ると、接続された関数は Player を受信します。これは、すべてのトークンを集めたプレイヤーのみが受信することができ、プレイヤーごとに発動するのは 1 回だけです。このイベントは Script でのみ接続できます。

パラメータ
プレイヤー: Playerすべてのトークンを集めたプレイヤー、またはすべての領域に入ったプレイヤー。
スクリプト

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)

ショー情報モーダル

プレイヤーが useCustomModals 配信サーバー オプションを設定したときにトークントラッカーをクリックすると、イベントが発生します。このイベントは、LocalScript にのみ接続できます。

ローカルスクリプト

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)

ショーコンプリートモーダル

プレイヤーが useCustomModalstrue オプションを設定しているときにトークントラッカーをクリックすると、このイベントは 1> player1> がスカベンジャーハントですべてのトークンを集めたときにのみ接続できます。このイベントは 4>Class.LocalScript4> にの

ローカルスクリプト

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)

コールバック

OtherGuis を隠す

OtherGuis(呼び出し機能: function )を非表示にする

このコールバックは、モーダルが表示される直前に実行され、モーダルが表示される前に ScreenGuis またはその内の要素をすべて無効にすることができます。詳細は、「GUI の可視性」を参照してください。サンプルコードは 1> Class.ScreenGui|ScreenGuis1> のコールバック1> です。

OtherGuis を表示

showOtherGuis(呼び出し: function )

このコールバックは、モーダルが終了した直後に実行され、ScreenGuis 全体またはその内の要素を有効にすることができます。詳細は、GUI の可視性を参照してください。サンプルコードは、Class.ScreenGui|ScreenGuis の下にあります。