일반적으로 함수는 내부에 코딩된 정보만 사용할 수 있습니다. 그러나 때때로 그 정보가 무엇인지 미리 알지 못할 수 있으며, 여러 비슷한 정보 조각으로 동일한 함수를 재사용할 수 있어야 할 수도 있습니다. 예를 들어, 가장 빠르게 장애물 코스를 완료한 사람의 이름을 모두에게 거대한 글자로 표시하는 함수를 사용하고 싶다고 가정해 보겠습니다. 경주가 끝날 때까지 미래의 우승자의 이름을 알 수 없습니다.
매개변수는 나중에 함수에 제공하고자 하는 정보에 대한 자리 표시자입니다. 이는 정보를 함수로 전달할 수 있도록 해주는 창과 같습니다.
매개변수와 이벤트를 사용하여 함정을 설정하기
이 스크립트는 해당 파트에 접촉하는 모든 것을 파괴하는 함정 파트를 생성합니다. 다른 파트도 포함됩니다. 이를 설정하기 위해 매개변수를 사용해야 합니다. 함정이 떨어져서 의도치 않게 사물을 파괴하지 않도록 고정하는 것을 주의하세요.
새 부품 만들기
접촉하는 모든 것을 파괴하는 부품을 설정해야 합니다.
- 아무것과도 접촉하지 않는 새 부품을 만듭니다. 뭔가에 닿아 있으면 너무 일찍 작동할 수 있습니다.
- 탐색기에서 부품 이름을:TrapPart로 바꿉니다.
- 부품을 **고정(Anchor)**합니다.
스크립트 설정하기
변수에 대한 지식과 경험 계층을 사용하여 함정 파트를 참조합니다.
함정 파트에 새 스크립트를 추가합니다. 스크립트 이름을 _TrapScript_로 변경합니다.
Hello World를 삭제하고 설명 댓글을 추가합니다.
댓글 아래에 스크립트의 부모를 찾는 새 변수를 만듭니다.
-- 부모에 닿은 것을 파괴합니다.local trap = script.Parent
매개변수가 있는 함수 만들기
함정은 접촉한 모든 것을 파괴하기 위해 함수를 사용합니다. 작동하려면 함수가 무엇이 해당 파트에 접촉했는지 알아야 합니다. 이를 위해 매개변수를 사용합니다. 매개변수는 함수 이름 뒤에 오는 () 안에 입력됩니다. 다음과 같은 형태로 보입니다:
local function functionName(parameterName)
end
매개변수를 통해 전달되는 실제 정보는 인수라고 합니다. onTouch()라는 새 함수를 만들고, 이 함수는 트리거된 물체를 추적하고 접촉한 부분을 파괴하는 objectTouched라는 매개변수를 가집니다.
로컬 함수를 생성합니다. 아무 이름이나 지을 수 있지만, 이 수업에서는 onTouch를 사용합니다.
local trap = script.Parentlocal function onTouch()end() 안에 매개변수의 이름을 입력합니다. 이 수업에서는 objectTouched를 사용합니다.
local trap = script.Parentlocal function onTouch(objectTouched)endlocal function onTouch()와 end 사이에 출력 문을 만듭니다. 다음 섹션에서 해당 매개변수가 접촉하고 있는지 확인하는 데 사용할 것입니다.
local trap = script.Parentlocal function onTouch(objectTouched)print("무언가가 함정을 만졌습니다.")end
이벤트를 사용하여 함수 호출하기
무언가가 이 부분에 접촉할 때마다 함수를 실행하고 싶습니다. 이를 위해 함수와 Touched 이벤트를 연결합니다. 이벤트는 경험에서 발생하는 일들입니다. 예를 들어, 플레이어가 파트를 만지거나 건강을 잃는 경우입니다. 함수가 이벤트에 연결되면, 이벤트가 발생할 때마다 함수가 실행됩니다.
Touched 이벤트는 한 파트가 다른 파트와 접촉할 때마다 발생하며, 플레이어가 상호작용하는 버튼, 함정, 기타 객체를 만드는 데 사용할 수 있습니다.
함수의 end 아래에 trap.Touched:Connect(onTouch)를 입력합니다.
local trap = script.Parentlocal function onTouch(objectTouched)print("무언가가 함정을 만졌습니다.")end-- 함수를 Touched 이벤트에 연결합니다trap.Touched:Connect(onTouch)테스트를 클릭한 후 파트를 만져보세요. 테스트 출력 문 무언가가 함정을 만졌습니다.가 표시되는지 확인하세요. 출력 창에서 문자열을 볼 수 없는 경우 다음을 확인하세요:
- 문자열 "무언가가 함정을 만졌습니다!"가 local function onTouch()와 end 사이에 있는지 확인하세요.
- Touched가 대문자인지 확인하세요.
이제 함수가 올바르게 설정되었으므로, 그 파트를 만지는 모든 것을 파괴하는 데 사용하세요. 함수 내부에서 문자열 다음에 objectTouched:Destroy()를 입력합니다. 완성된 코드는 다음과 같습니다:
local trap = script.Parentlocal function onTouch(objectTouched)print("무언가가 함정을 만졌습니다.")-- 접촉한 객체 파괴objectTouched:Destroy()endtrap.Touched:Connect(onTouch)다시 테스트하여 부분이 만져졌을 때 어떤 일이 발생하는지 확인하세요. 여러분의 아바타는 발이나 팔이 없어질 수 있습니다. 만약 그 부분이 아바타의 머리나 목에 닿는다면, 완전히 파괴될 수도 있습니다.
요약
매개변수는 일반적으로 범위 밖에 있는 정보(함수가 볼 수 없는 곳)를 함수로 전달하는 데 사용됩니다. 한편, 이벤트는 경험 내에서 중요한 일이 발생할 때 발생하는 특별한 신호입니다. 서로 다른 객체는 서로 다른 이벤트를 가지고 있습니다. 함수는 이벤트에 연결될 수 있으며, 이벤트가 발생할 때마다 호출됩니다. 이 작은 스크립트는 함정의 Touched 이벤트에 함수를 연결하고, 매개변수를 통해 함정을 만지는 것을 전달했습니다.