アップグレードの購入

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

これは、ゲームのループの最後のステージに到達します - アップグレードを購入することです。プレイヤーがアイテムのサイズを拡大するアップグレードを購入することで、より多くのアイテムを訪問するたびに収穫でき、さらに多くのゴールドを獲得できます。

ショップの作成

各ショップには、プレイヤーがより大きなアイテムバッグを購入するためにクリックするボタンがあります。ショップ自体は、SurfaceGUI、部品にテキストを書くことができる部品です。

サインを作成中

  1. ワークスペースで、新しいモデルを作成して、「ショップ」と名付けます。

  2. ショップで、BuyButton という名前の新しいブロックパーツを作成します。

  3. In BuyButton で、+ をクリックして GUI にスクロールして、新しいサーフェス GUI を追加します。

  4. Surface GUI に、「BuyText」という名前の新しいテキストラベルを追加します。パーツのどこかに小さなラベルが表示されます。

  5. パーツがどうやって作成されたかによって、ラベルは別の場所にあるかもしれません。如果 you don't see the text on the side you want, go into the SurfaceGUI and find the Face property. そのプロパティを変更するまで、テキストラベルを見るまで。

サインテキストを変更する

現在、TextLabel はプレイヤーが見るのが本当に小さく、届きにくいです。サイズを拡大する必要があります。

  1. In the BuyText properties, click on the arrow next to サイズ . Change the オフセット for X (left and right) and Y (up and down) to 0.

  2. X と Y のスケールを 0.5 に変更して正方形を作成します。

  3. テキストラベルプロパティのスクロールアップで、 アンカーポイント の左にある矢印をクリックします。0.5 を入力して X と Y を入力します。これはレーベルの一部をビューから移動させますが、次の位置に正しく配置されます。

  4. プロパティのスクロールダウンと Position を開きます。X と Y のスケールを 0.5 に変更して、ボックスを中央に配置します。

  5. [購入テキスト] プロパティで、 テキスト を説明的なものにスクロールダウンし、変更します。たとえば:"Buy Larger Bag: 100 gold"

  6. Check TextScaled をチェックして、 on になります。これにより、テキストがボックスにフィットするように自動でスケールされます。

クリックディテクターを追加する

プレイヤーは、ショップをクリックすることでアイテムを購入することができます。スクリプトは、ユーザーがショップの看板をクリックしたかどうかを判断するためにクリックディテクターを使用します。 クリックディテクター は、ドアを開くなど、環境内の対象とユーザーがインタラクトすることができるオブジェクトです。

  1. [購入ボタン] に、[クリックディテクター] を追加します。

  2. In BuyButton で、新しいスクリプトを名前 BuyScript として追加し、コメントする明コメントを付けます。

  3. In BuyScript で、ボタン部分を保存する変数を作成し、クリック探知機をクリックします。


    -- プレイヤーがスペースを拡張するアップグレードを購入するには、ボタンをクリックしてください
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. 新しい関数を作成して、giveUpgrade() という名前のパラメーターを持つプレープレイヤーーを取得するようにします。関数は、プレーヤーがボタンをクリックするたびにスペースをアップグレードします。


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. 関数後、 MouseClick イベントを giveUpgrade() 関数に接続します。


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. giveUpgrade() の下にプリントステートメントを追加して、機能をテストします。


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. プレイ プロジェクト。ボタンをクリックし、出力ウィンドウでテキストを見ることを確認してください。

トラブルシューティングのヒント

問題: ボタンをクリックできないか、またはマウスのカーソルがボタンに表示されません。

  • ClickDetector オブジェクトが、あなたがクリックしようとしている部分の子であることを確認してください。
  • キャラクターがボタンに十分接近しているかどうかをチェックします。また、ツールが装備されていないことを確認します。

アップグレードの購入

機能するボタンで、コードを giveUpgrade に追加して、プレイヤーのゴールドをアップグレードしたバッグと引き換えに削除します。

アップグレード変数を追加する

それぞれのアップグレードには 2つの変数があります:アップグレードのコストと、持つスペースの数です。

  1. In BuyScript、local clickDetector の下で、2つの変数を作成します:

    • newSpace : アップグレードを購入するときに追加されるスペースの数。
    • upgradeCost : 単一のアップグレードのコスト

    -- アップグレードの変数
    local newSpaces = 10
    local upgradeCost = 100

アップグレードの付与

プレイヤーにアップグレードを販売する前に、彼らに十分なお金があるかどうかを確認する必要があります。如果そうなら、彼らの最大スペースに追加します。

  1. In giveUpgrade() で、次の下記のフォーマットを使用してプレイヤーのリーダー統計を取得して、金とスペースの変数にアクセスできるようにします。


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- プレイヤーのリーダーボードを取得して、他の IntValues を取得する
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- プレイヤーのマネーとスペースを取得して変更を行う
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. スペースの変数を書いた後、playerGold の値がアップグレードコストと同じかどうかを if 文で表示します。


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- プレイヤーがアップグレードを買うために十分なお金を持っているかどうかチェック
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. if 文で、アップグレードのコストをプレイヤーのゴールドから控除します。


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- プレイヤーのマネーからアイテムのコストを控除する
    playerGold.Value -= upgradeCost
    end
  4. 次の行に、アップグレードにより割り当てられた新しいスペースの数を追加します。


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. プロジェクトをプレイし、リーダーボードをチェックして、スペースのアップグレードが機能したかどうかを確認します。

トラブルシューティングのヒント

この時点で、アップグレードは期待通りに機能しません。以下の 1つを試してください。

  • FindFirstChild() の Make sure anything in the leaderstats of 1> both1> sides, like 4>#leaderstats4> でよく使われているようにしてください。
  • FindFirstChild の各ストリングが PlayerSetup スクリプトの IntValue の名前と正確に同じかどうかをチェックします。たとえば、コードが Rubies をマネーとして使用する場合は、FindFirstChild("Rubies") がある必要があります。
  • Make sure that giveUpgrade()clickDetector.MouseClick の上にあります。

スクリプトを完了する

スクリプトの完成したバージョンは、以下に参照できます。


-- プレイヤーがMaxSpacesをアップグレードするボタンをクリックしてもらおう
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- アップグレードの変数
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- プレイヤーのリーダーボードを取得して、他の IntValues を取得する
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- プレイヤーのマネーとスペースを取得して変更を行う
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- プレイヤーがアップグレードを買うために十分なお金を持っているかどうかチェック
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- プレイヤーのマネーからアイテムのコストを控除する
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)