Bethesda Tutorial Papyrus Variables and Conditionals/ko
Bethesda Tutorial Papyrus Variables and Conditionals/ko | |
---|---|
Scripting Series, Chapter 2 | |
Return to Tutorial Hub | |
Previous Tutorial | Next Tutorial |
개요[edit | edit source]
이 튜토리얼은 당신이 Hello World 튜토리얼을 완수했다고 가정한다.
이번 튜토리얼에서는 :
- 변수를 만들고 사용하는 방법
- 나중 작업을 위해 스크립트에 메모를 남기는 방법
- 게임 내에서 스크립트를 변수 값에 대해 작동시키는 방법
- 상황에 따른 if-then-else 명령어를 스크립트에 추가하고 사용하는 방법
을 배울 것이다.
변수(Variables)[edit | edit source]
변수는 어떠한 정보나 대상의 저장공간으로 볼 수 있다. 당신은 변수값들을 설정할 수 있으며, 수치적으로 값을 증가 혹은 감소 시킬 수 있고, 후에 그 내용들을 다시 불러올 수 있다.
이번에는 플레이어가 활성화 횟수를 카운트 하여 그 변수를 Hello World 튜토리얼에서 우리가 썼던 스크립트에 추가할 것이다. 그리고 매번 다른 값이 나오게 할 것이다.
기둥의 Reference창을 다시 열고, HelloWorldScript를 우클릭한다. "Edit Source"를 선택하여 스크립트 편집 창을 띄운다.
당신의 스크립트는 다음과 같이 나올 것이다. :
Scriptname HelloWorldScript extends ObjectReference
{This is my very first script!}
Event OnActivate(ObjectReference akActionRef)
Debug.MessageBox("Hello, World!")
endEvent
이제 변수를 추가해보자. 아래 문장을 "Event OnActivate" 문장의 상단에 추가한다.
int count ;stores the number of times this object has been activated
- int count ;stores the number... - int 는 변수의 타입을 정의한다. 여기서 "Integer"는 소수점이 없는 양,음수의 정수이다.
- int count ;stores the number... - count는 우리가 변수에 부여한 이름이다. 나중에 다시 쓰게 될 것이다.
- int count ;stores the number... - 세미콜론(;) 뒤에 있는 문장들은 코멘트의 역할을 한다. 즉, 스크립트 자체가 영향을 받는 것은 아니지만, 누군가가 당신의 스크립트를 보았을 때 이해를 돕는다.
숫자를 세는 문장을 추가해보자. "Event OnActivate..." 문장과 "Debug.MessageBox..." 문장 사이에 다음을 추가한다.
count = count + 1
이것이 위에서 말한 내용이다. "count"라는 변수에 1을 더한 값을 받아서 다시 "count" 변수에 저장하는 방식이다. 다시 말해, 조건을 만족할 때마다 동등 표시(=)의 좌측 변수가 우측 식의 결과값으로 다시 저장된다는 것이다.
run time에서 스크립트의 변수 보기[edit | edit source]
현재 게임이 실행되지 않고 있어야 한다. 스크립트를 저장한 후 reference 창에서 "OK"버튼을 누르고 닫는다. 도구 막대에서 저장 버튼을 눌러 당신의 플러그인을 저장한다.
다시 게임을 실행시키고 전에 만들어 둔 기둥으로 이동한다. (참고: 콘솔창을 열고 물결키(~)를 누르고 다음을 입력한다:)
COC MolagBalVoiceCell
우선 우리는 "count" 변수의 값을 확인해야 한다. 따로 설정하기 전 기본값은 0이다.
콘솔창을 다시 열고(~) 콘솔창이 열려 있는 상태에서 마우스로 기둥을 선택한다. 기둥을 마우스로 선택하면 콘솔창 상단에 "'WETempActivator'"와 괄호 속 숫자를 볼 수 있을 것이다. ("WETempActivator"는 뜨지 않을 수 있다.)
이제 콘솔창에 다음을 입력한다. :
ShowVars
그러면 콘솔창에서 다음과 같이 표시되는 것을 볼 수 있다. :
--- Papyrus --------------------- HelloWorldScript: Script state = "" count = 0
"Count" 변수값이 0인 것을 볼 수 있다.
콘솔창을 닫고(~) 기둥을 3번 활성화시킨다. ("Hello World!" 메세지 박스를 3번 뜨게 한다.)
좋다. 이제 어떻게 해야할까? 우리는 이제 위 정보를 이용하여 당신이 기둥을 클릭한 수만큼 다른 메세지를 출력할 수 있다. 게임을 종료하고 다시 스크립트를 편집한다.
상황별 명령어 (if-then-else)[edit | edit source]
이제 우리는 "상황별 명령어"를 추가할 것이다. 이는 스크립트 내에서 발생하는 것들을 논리적으로 제어할 수 있게 한다. "Debug.MessageBox("Hello, World!")" 문장을 아래 내용으로 바꾼다.
if count == 1
Debug.MessageBox("Hello, World!")
elseif count == 2
Debug.MessageBox("Hello, World. Again!")
else
Debug.MessageBox("Hello, World. Enough already!")
endif
카운트한 값에 따라 스크립트의 행동이 달라지게 되었다. 여기서는 다른 메세지를 출력한다. 여기서 짚고 넘어가야 할 중요한 것은 이중 동등 기호이다.(==) 이는 좌변과 우변의 값이 같은지 아닌지를 판별한다. 단일 동등 기호(=)는 당신이 변수를 저장한다는 것이다. 처음에는 다소 헷갈릴 수 있고, 숙달된 스크립터들도 이 두가지 기호가 갑자기 헷갈려서 그들의 스크립트가 작동하지 않으면 머리를 쥐어뜯기도 한다.
복습 :
- 단일 동등 기호 (=) : 우변의 결과를 좌변값에 다시 입력함
- 이중 동등 기호 (==) : 좌변의 값과 우변의 값이 같은지 확인
당신의 스크립트는 이제 아래와 같을 것이다. :
Scriptname HelloWorldScript extends ObjectReference
{This is my very first script!}
int count ;stores the number of times this object has been activated
Event OnActivate(ObjectReference akActionRef)
count = count + 1
if count == 1
Debug.MessageBox("Hello, World!")
elseif count == 2
Debug.MessageBox("Hello, World. Again!")
else
Debug.MessageBox("Hello, World. Enough already!")
endif
endEvent
다시 게임을 켜고 cell로 이동하여 기둥을 작동시킨다. 작동시킬 때마다 3가지의 다른 메세지가 뜨는 것을 확인한다.
추가 정보[edit | edit source]
- 사용할 수 있는 단순 변수값들의 종류에 대한 정보가 필요하면, Literals Reference를 참고하라.
- 연산자(=, +=, 그 외)에 대한 정보가 필요하면, Operator Reference를 참고하라.
- if-then-else같은 명령어에 대한 정보가 필요하면, Statement Reference를 참고하라.
Edited by AG초보(2016.05.05)
Language: | English • français • 日本語 • 한국어 • polski • русский |
---|
Previous Tutorial | Return to Tutorial Hub | Next Tutorial |