업그레이드 구매

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

이것은 게임 루프의 마지막 단계로 이동합니다 - 업그레이드 구매.플레이어가 아이템 가방의 크기를 늘리는 업그레이드를 구매하도록 하면 더 많은 아이템을 더 많이 수확하고 더 많은 골드를 얻을 수 있습니다.

둘러보다생성

각 상점에는 플레이어가 클릭하여 더 큰 아이템 가방을 구매하는 버튼이 있습니다.상점 자체가 SurfaceGUI와 함께 부품에 텍스트를 기록할 수 있는 아이템인 부품이 될 것입니다.

표지 생성

  1. 작업 공간에서 상점이라는 새 모델을 만듭니다.

  2. 상점에서 BuyButton이라는 새 블록 부품을 만듭니다.

  3. 구매 버튼에서 +를 클릭하고 GUI로 스크롤하여 새 표면 GUI를 추가합니다.

  4. 표면 GUI에서 BuyText라는 새 텍스트 레이블을 추가합니다. 부품 어딘가에 작은 레이블이 나타납니다.

  5. 부품이 만들어진 방식에 따라 레이블은 다른 곳에 있을 수 있습니다.원하는 측면에 텍스트가 표시되지 않으면 SurfaceGUI로 이동하여 Face 속성을 찾으십시오.텍스트 레이블을 보을 때까지 해당 속성을 변경합니다.

표지판 텍스트 변경

현재 TextLabel은 플레이어가 보기에는 너무 작고 어렵습니다. 확장해야 합니다.

  1. 구매 텍스트 속성에서 크기 옆에 있는 화살표를 클릭하십시오. X(왼쪽과 오른쪽)와 Y(위와 아래)의 오프셋 을 0으로 변경합니다.

  2. X와 Y의 크기 를 0.5로 변경하여 사각형을 만듭니다.

  3. 텍스트랩 속성에서 위쪽으로 스크롤하고 앵커 포인트 의 왼쪽 화살표를 클릭합니다.X와 Y에 0.5를 입력합니다.이렇게 하면 레이블의 일부가 시야에서 벗어나지만 다음에 올바르게 위치합니다.

  4. 속성을 아래로 스크롤하고 위치 를 엽니다. X와 Y의 크기를 0.5로 변경하여 상자가 중앙에 정렬됩니다.

  5. 구매 텍스트 속성에서 아래로 스크롤하여 텍스트 를 설명적인 것으로 변경합니다. 예를 인스턴스: "Buy Larger Bag: 100 gold".

  6. 검사 TextScaled 있는지 확인하십시오. 이것은 자동으로 텍스트를 확장하여 상자에 맞게 합니다.

클릭 감지기 추가

플레이어는 단지 만지는 것이 아니라 상점을 클릭하여 아이템을 구매할 것입니다.스크립트는 클릭 감지기를 사용하여 플레이어가 상점 표지판을 클릭했는지 알려줍니다. 클릭 감지기 는 사용자가 환경에서 문을 열거나 상호 작용하도록 허용하는 개체입니다.

  1. 구매 버튼에서 클릭 감지기를 추가합니다.

  2. 구매 버튼에서 BuyScript라는 새 스크립트를 추가하고 설명 코멘트를 달다/남기다, 의견을 내다제공합니다.

  3. BuyScript에서 버튼 부분과 클릭 탐지기를 저장하기 위한 변수를 만듭니다.


    -- 플레이어가 버튼을 클릭하여 공간을 늘리는 업그레이드를 구매하게 합니다
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. 매개 변수 이름이 giveUpgrade() 인 새 함수를 만들어 이름이 player 인 매개 변수를 가져옵니다.Create a new function named that gets a parameter named .함수는 플레이어가 버튼을 클릭할 때마다 공간을 업그레이드합니다.


    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. 플레이 프로젝트를 플레이합니다. 버튼을 클릭하고 출력 창에 텍스트가 표시되는지 확인하십시오.

문제 해결 팁

문제: 버튼을 클릭할 수 없거나 마우스 커서가 버튼에 나타나지 않습니다.

  • 클릭 감지기 개체가 클릭하려는 부품의 자식인지 확인하십시오.
  • 캐릭터가 버튼에 충분히 가까이 있는지 확인하거나, 도구가 장착되지 않았는지 확인하십시오.

업그레이드 구매

작동 버튼이 있으면 giveUpgrade에 코드를 추가하여 플레이어의 골드를 업그레이드된 가방으로 교환하여 제거할 시간입니다.

업그레이드 변수 추가

각 업그레이드에는 두 가지 변수가 있습니다: 업그레이드 비용과 포함된 공간 수입니다.

  1. BuyScript에서 local clickDetector 아래에서 두 가지 변수를 만듭니다:

    • 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. 프로젝트를 플레이하고 리더보드를 확인하여 공간 업그레이드가 작동했는지 확인합니다.

문제 해결 팁

이 시점에서 업그레이드가 의도한 대로 작동하지 않으면 다음 중 하나를 시도하십시오.

  • Make sure anything in the 의 에 따옴표가 양쪽에 있는지 확인하십시오, 예를 들어 처럼.
  • FindFirstChild의 각 문자열이 PlayerSetup 스크립트에서 IntValue의 이름과 정확히 동일한지 확인하십시오.예를 들어, 코드에서 루비를 돈으로 사용하면 FindFirstChild("Rubies") 가 있어야 합니다.
  • Make sure that giveUpgrade() 위에 있는지 확인하십시오 clickDetector.MouseClick .

BuyScript 스크립트 완료

스크립트의 완성된 버전은 아래에서 참조할 수 있습니다.


-- 플레이어가 버튼을 클릭하여 최대 공간을 늘리는 업그레이드를 구매하도록 합니다
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)