여러 조건

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

제어 구조에는 하나 이상의 조건이 있을 수 있습니다.키워드 elseelseif 는 여러 조건에서 발생해야 하는 추가 시나리오를 생성할 수 있습니다.구문은 다음과 같습니다:

elif와 else의 구문을 표시합니다

if isGreen then
print("Go")
elseif isYellow then
print("Slow")
elseif isPedestrians then
print("Wait")
else
print("stop")
end

이 프로젝트에서는 elseelseif 가 사용되어 러너들이 완료 시간에 따라 상을 받는 파쿠르 코스를 코딩합니다.

여러 조건 코드

이 프로젝트에서는 각 메달에 대해 플레이어에게 수여할 고유한 if 문을 작성할 수 있지만, 시간이 많이 걸립니다.예를 인스턴스, 아래의 가상 코드를 가져보겠습니다.

모든 if 문

if finishTime < 5 then
-- 금메달 획득
end
if finishTime >= 5 and <= 10 then
-- 은메달 획득
end
if finishTime > 10 and <= 15 then
-- 청동 메달 획득
end

이것을 코딩하는 더 읽기 쉽고 효율적인 방법은 단일 if 문을 사용하고 키워드 elseif를 사용하여 이전 조건이 참이 아닌지 테스트하는 대체 조건을 제공하는 것입니다.

elif와 else 사용

if finishTime < 5 then
-- 금메달 획득
elseif finishTime >= 5 and <= 10 then
-- 은메달 획득
elseif finishTime > 10 and <= 15 then
-- 청동 메달 획득
end

if/then 문이 실행되면 맨 위에서 시작하고 검색한 첫 번째 조건 에 대한 코드만 실행합니다.

레이스 코스 설정

코스의 시작점과 완료선을 배치하여 시작하고, 플레이어를 타이밍하고 다양한 메달을 수여하기 위한 스크립트를 만듭니다.

  1. FinishLine라는 고정된 부품을 만듭니다.테스트를 더 빠르게 수행하려면 시작과 끝을 가까이 배치하십시오.스크립트를 완료한 후 종료선을 이동할 수 있습니다.

    파트 완료
    전체 코스
  2. FinishLine에서 RaceManager라는 스크립트를 삽입합니다.그런 다음 레이스가 시작된 이후 지난 시간과 피니시 라인을 참조하는 두 번째 변수를 추가합니다.


    local finishLine = script.Parent
    local timePassed = 0
  3. 함수 finish()라는 이름을 만듭니다.


    local timePassed = 0
    local finishLine = script.Parent
    local function finish()
    end
  4. 직접:

    • 플레이어가 터치할 때 partTouched() 실행되는 함수를 코드화하여 finish() 합니다.
    • 피니시 라인 부분을 partTouched()에 연결하십시오.
    • 코드를 아래 예제와 비교하십시오.

    local function finish()
    print("touched the finish line")
    end
    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid then
    finish()
    end
    end
    finishLine.Touched:Connect(partTouched)
  5. 플레이테스트를 수행하고 완료선을 터치할 때 finish()가 호출되는지 확인하십시오.

fin()의 반복 방지

현재, 플레이어가 완료선을 터치할 때마다, finish() 는 플레이어가 부품을 터치하는 한 계속 호출됩니다. 부울 을 사용하여 true 또는 false를 저장하는 변수를 사용하여 완료()가 한 번만 호출되도록 합니다.

  1. 새로운 변수 raceActive를 만들고 그것을 true로 설정합니다.


    local timePassed = 0
    local finishLine = script.Parent
    local raceActive = true
    -- 플레이어가 완료선 부분을 터치할 때마다 실행됩니다
    local function finish()
  2. if 문에 두 번째 조건을 추가하여 레이스Active가 true인지 확인한 다음 finish()를 호출합니다.


    local function partTouched(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and raceActive == true then
    finish()
    end
    end
  3. 를 다시 호출하지 않도록 하려면 를 으로 설정하십시오.


    local function finish()
    print("touched the finish line")
    raceActive = false
    end
  4. 게임을 플레이하여 한 번만 테스트 인쇄 문서를 볼 수 있는지 확인합니다.

시간 추적 유지

if 문과 마찬가지로, while 루프도 조건을 사용하여 실행할지 여부를 확인할 수 있습니다.플레이어를 타이밍하려면 raceActive 부울이 true일 때만 실행되는 while true do 루프를 사용하여 타이머를 만들어 주세요.

  1. 스크립트 맨 아래에서 while raceActive == true do를 입력하십시오. 엔터를 눌러 자동으로 완성하고 end를 추가하십시오.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    end
  2. 플레이어를 타이밍하려면 루프에서 매 초마다 timePassed 변수에 1을 추가하십시오. 작업을 테스트하기 위한 인쇄 문을 포함하십시오.


    finishLine.Touched:Connect(partTouched)
    while raceActive == true do
    task.wait(1)
    timePassed += 1
    print(timePassed)
    end
  3. 게임을 플레이하고 출력 창에 매초 표시되는지 확인하십시오.

플레이어 메달 수여

마지막으로, 여러 조건을 사용하여 if 문을 사용하여 플레이어에게 이행따라 다른 상 메달을 수여합니다.if 문과 zwei 문을 사용하여 플레이어의 완료 시간을 확인하고 올바른 메달을 수여합니다.

  1. 각 메달을 수여할 수 있는지 확인하려면 인쇄 문을 사용하십시오.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    end
  2. 금메달을 수여하려면 timePassed를 원하는 완료 시간과 비교하는 if 문을 코드로 작성하십시오.이 예에서는 플레이어의 시간이 10초 미만이거나 같은지 확인합니다.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    end
    end
  3. 플레이테스트를 통해 금메달을 수여할 수 있는지 확인합니다.

추가 조건 추가

이제 금메달을 테스트했으므로, elseif 키워드를 사용하여 다른 메달의 코드 조건을 테스트하십시오.

  1. 은메달의 경우 elseif 및 다음 원하는 시간 범위를 사용하십시오.이 예제에서는 범위가 10초 이상이지만 20초 미만이거나 같습니다.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    end
    end
  2. 브론즈 메달에는 동일한 패턴을 사용하십시오. 아래 예제로 코드를 확인하십시오.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    end
    end
  3. 은색과 브론즈 메달에 대한 플레이테스트.

문제 해결 팁

은색과 브론즈 금속이 표시되지 않으면 아래 중 하나를 시도하십시오.

  • elseif 조건 뒤에 다음이 있어야 합니다.
  • 에서 , if 문의 두 번째 조건이 에서와 같이 를 사용하는지 확인하십시오.
  • elseif 가 범위에 있는지 확인하십시오. 각 elseif 조건은 if/then 문의 첫 줄과 마지막 end 사이에 있어야 합니다.

다른 조건 추가

플레이어가 메달을 획득하지 않았다면, 다시 시도하도록 권장해야 합니다.이 경우 다른 조건이 없는 경우 실행되는 문을 사용하여 메시지를 표시할 수 있습니다.

  1. 마지막 elseif 아래와 위의 end 위에서 새 줄을 시작하고 else 을 입력하십시오. 그런 다음 추가하지 마십시오 .그 외 모두 아래에서 print 문을 사용하여 다시 시도하도록 유도합니다.


    local function finish()
    raceActive = false
    print("You finished in " .. timePassed)
    if timePassed <= 10 then
    print("You get a gold medal!")
    elseif timePassed > 10 and timePassed <= 20 then
    print("You get a silver medal!")
    elseif timePassed > 20 and timePassed <= 30 then
    print("You get a bronze medal!")
    else
    print("Try again!")
    end
    end

2 . 다른 메시지를 보려면 플레이테스트를 수행합니다.

요약

제어 구조에는 하나 이상의 시나리오가 있을 수 있습니다.문을 사용하여 처음 확인할 문을 설정한 다음 필요한만큼의 elseif 조건을 추가합니다.마지막으로, else를 사용하여 모든 조건이 거짓인 경우 발생할 내용을 지정합니다.

맨 위부터 모든 조건이 확인되고 첫 번째 진실한 조건만 코드를 실행합니다.나머지 조건은 확인되지 않으며 코드도 실행되지 않습니다.

프로젝트를 완료한 후 스크립트를 확장하여 몇 가지 추가 방법으로 새로운 요소를 추가할 수 있습니다.

  • 플레이어가 종료할 때 시작 라인을 터치하여 레이스를 반복할 수 있도록 코드를 추가합니다.
  • 레이스 중에 시간을 표시하는 방법 설계.부품에 표시 시간을 Surface GUI를 사용하여 표시할 수 있습니다. 시간 제한 다리 생성 자습서와 같이.
Completed script

local timePassed = 0
local finishLine = script.Parent
-- 레이스가 끝날 때 finish()와 타이머가 반복되지 않도록 유지하는 데 사용됩니다
local raceActive = true
-- 플레이어가 완료선을 터치하고 보상을 표시할 때 실행
local function finish()
raceActive = false
print("You finished in " .. timePassed)
if timePassed <= 10 then
print("You get a gold medal!")
elseif timePassed > 10 and timePassed <= 20 then
print("You get a silver medal!")
elseif timePassed > 20 and timePassed <= 30 then
print("You get a bronze medal!")
else
print("Try again!")
end
end
-- 레이스가 활성화될 때 플레이어가 부품을 터치하는지 확인합니다
local function partTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid and raceActive == true then
finish()
end
end
finishLine.Touched:Connect(partTouched)
-- 레이스가 활성화된 상태에서 레이스 시간을 추적합니다. 스크립트 하단에 있어야 합니다.
while raceActive == true do
task.wait(1)
timePassed += 1
print(timePassed)
end