これでゲームループの最後の段階に到達します - アップグレードの購入。プレイヤーがアイテムバッグのサイズを拡大するアップグレードを購入できるようにすると、より多くのアイテムを毎回持ち出せ、より多くのゴールドを獲得できます。
買うを作成する
各ショップには、プレイヤーがクリックしてより大きなアイテムバッグを購入するボタンがあります。ショップ自体は、テキストをパーツに書き込むことができる SurfaceGUI の一部です。
サインを作成する
ワークスペースで、Shop という新しいモデルを作成します。
ショップで、購入ボタンという新しいブロックパーツを作成します。
[購入ボタン] で、+ をクリックして GUI にスクロールして新しいサーフェスGUIを追加します。
サーフェスGUI で、新しいテキストラベル名 BuyText を追加します。小さなラベルがパーツのどこかに表示されます。
パーツが作られた方法に応じて、ラベルは別の場所にある可能性があります。望む側面にテキストが表示されない場合は、SurfaceGUI に移動して [顔] プロパティを見つけます。テキストラベルが表示されるまで、そのプロパティを変更します。
サインテキストを変更
現在、テキストラベルはプレイヤーに見えるのが困難で、非常に小さいです。拡大する必要があります。
[購入テキスト] プロパティで、 サイズ の横にある矢印をクリックします。X (左と右) と Y (上と下) の オフセット を 0 に変更します。
XとYの スケール を0.5に変更して、正方形を作成する
テキストラベルプロパティでスクロールアップし、 アンカーポイント の左矢印をクリックします。X と Y に 0.5 を入力します。これにより、ラベルの一部が視界から外されますが、次に正しく配置します。
プロパティをスクロールダウンし、 ポジション を開きます。XとYのスケールを 0.5 に変更して、ボックスが中央に配置されます。
[購入テキスト] プロパティで、下スクロールして テキスト を説明的なものに変更します。インスタンス: "Buy Larger Bag: 100 gold"。
チェック テキストスケールド を に 。これは自動的にテキストをスケールし、箱に合うようになります。
クリックディテクターを追加
プレイヤーは、単に触るのではなく、ショップをクリックしてアイテムを購入します。スクリプトはクリック検出器を使用して、プレイヤーがショップの看板をクリックしたかどうかを判断します。 クリックディテクター は、ユーザーが環境内の何かと対話できるようにするオブジェクトで、ドアを開くなどです。
購入ボタンで、クリックディテクタを追加します。
[購入ボタン] で、新しいスクリプトの名前 BuyScript を追加し、コメントする明コメントを付けます。
BuyScript では、ボタンパーツとクリック検出器を保存する変数を作成し、クリックします。
-- プレイヤーがボタンをクリックして、スペースを増やすアップグレードを購入するようにしますlocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetector新しい機能 giveUpgrade() を作成し、パラメータ名 player を取得する新しい機能を作成します。機能は、ボタンをクリックするたびにプレイヤーのスペースをアップグレードします。
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)end機能の後、クリックディテクターの MouseClick イベントを giveUpgrade() 機能に接続します。
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)giveUpgrade() に印刷文を追加して、機能をテストします。
local function giveUpgrade(player)print("Someone clicked the button.")endプレイ あなたのプロジェクト。ボタンをクリックして、出力ウィンドウにテキストが表示されているかどうかを確認します。
トラブルシュートのヒント
問題: ボタンをクリックできないか、マウスカーソルがボタンに表示されない
- クリックディテクタオブジェクトが、クリックしようとしているパーツの子であることを確認してください。
- キャラクターがボタンに十分に近いかどうかをチェックします。または、ツールが装備されていないことを確認します。
アップグレードを購入
作動するボタンがあると、giveUpgrade にコードを追加して、プレイヤーのゴールドをアップグレードしたバッグと引き換えに削除する時が来ました。
アップグレード変数を追加する
各アップグレードには、アップグレードコストと空間の数が 2つの変数があります。
BuyScript では、 local clickDetector の下で、2つの変数を作成します:
- newSpace : アップグレードが購入されたときに追加されるスペースの数。
- upgradeCost : 単一のアップグレードのコスト
-- アップグレードのための変数local newSpaces = 10local upgradeCost = 100
アップグレードを付与
プレイヤーにアップグレードを販売する前に、十分な資金を持っているかどうかをチェックする必要があります。彼らがそうすれば、彼らの最大スペース数に追加します。
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")endendスペースの変数を書いた後、if 文を作成して、playerGold の値がアップグレードコストと同じかそれ以上である場合を if します。
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- プレイヤーがアップグレードに十分なお金を持っているかどうかをチェックif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendif 文では、アップグレードのコストをプレイヤーのゴールドから控除します。
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- アイテムのコストをプレイヤーのマネーから控除するplayerGold.Value -= upgradeCostend次の行では、アップグレードごとに付与される新しいスペースとともに、プレイヤーの現在のスペースの数を追加します。
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendプロジェクトを再生し、リーダーボードをチェックして、スペースアップグレードが機能しているかどうかを確認します。
トラブルシュートのヒント
この時点で、アップグレードは意図した通りに機能しません。以下のいずれかを試してください。
- Make sure anything in the () の FindFirstChild() の both 側に、引用があることを確認してください、例えば "leaderstats" 。
- FindFirstChild の各ストリングが、プレイヤーセットアップスクリプトの IntValue の名前と完全に同じかどうかをチェックします。たとえば、コードがルビーをマネーとして使用している場合、FindFirstChild("Rubies") があるべきです。
- Make sure that giveUpgrade() が clickDetector.MouseClick より上にあることを確認してください。
完全な BuyScript スクリプト
スクリプトの完了したバージョンは以下で参照できます。
-- プレイヤーがボタンをクリックして、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)