스크립트 속성 정의하기
스크립트 속성(script attribute)은 코드 밖에서 바꿀 수 있게 꺼내 놓은 값입니다. 속성으로 선언한 값은 엔티티의 SCRIPT 칸에 입력 칸으로 나타나고, 같은 스크립트를 붙인 엔티티마다 다른 값을 줄 수 있습니다. 이 페이지는 코드에서 속성을 선언하는 방법을 정리합니다. 이미 있는 속성 값을 바꾸는 방법은 스크립트 속성 값 바꾸기에 있습니다.
선언하기
attributes.add(이름, 설정)을 createScript 다음에 씁니다.
var PlayHit = ow.createScript('playHit');
PlayHit.attributes.add('slotName', {
type: 'string',
default: 'hit',
description: 'SOUND 칸의 슬롯 이름'
});
코드 안에서는 this.slotName으로 읽습니다. 이 코드는 소리 넣기에서 실행해 확인했습니다.
설정 항목
| 항목 | 뜻 |
|---|---|
type | 값의 종류(아래 표). 칸 모양이 이것으로 정해집니다 |
default | 처음 값. 스크립트를 처음 붙일 때 칸에 들어갑니다 |
title | 칸에 표시할 이름. 없으면 속성 이름이 나옵니다. 한글도 됩니다 |
description | 칸 설명 |
min, max | 숫자 범위. 주면 숫자 칸 옆에 밀대가 생깁니다 |
array | true면 여러 값을 담는 목록 칸. Array Size로 개수를 정하고, 항목마다 휴지통으로 지웁니다 |
type
2026-10-29에 아래 type을 모두 선언한 스크립트를 만들어 엔티티에 붙이고, 에디터 칸과 Launch한 게임에서 받은 값을 확인했습니다(1회).
AttrTest.attributes.add('speed', { type: 'number', default: 3, title: '이동 속도', min: 0, max: 10 });
AttrTest.attributes.add('label', { type: 'string', default: '점수' });
AttrTest.attributes.add('loop', { type: 'boolean', default: true });
AttrTest.attributes.add('tint', { type: 'rgba', default: [1, 0.5, 0, 1] });
AttrTest.attributes.add('offset', { type: 'vec3', default: [0, 1, 0] });
AttrTest.attributes.add('target', { type: 'entity' });
AttrTest.attributes.add('clip', { type: 'asset', assetType: 'audio' });
AttrTest.attributes.add('points', { type: 'number', array: true, default: [1, 2] });
AttrTest.attributes.add('ease', { type: 'curve' });
| type | 칸 모양 | 게임에서 받은 값 |
|---|---|---|
number | 숫자 칸. min·max를 주면 밀대가 붙습니다 | 3 |
string | 글자 칸 | '점수' |
boolean | 체크 칸 | true |
rgb, rgba | 색 견본 | 색 객체. toString()이 #ff8000 |
vec2, vec3, vec4 | 숫자 칸 2~4개 | 벡터. [0, 1, 0] |
entity | Select Entity 칸. 엔티티를 끌어다 놓습니다 | 비어 있으면 null |
asset | 에셋 칸(Empty). assetType으로 종류를 제한합니다 | 비어 있으면 null |
curve | 곡선 칸(빨간 선 띠). 누르면 곡선 편집 창이 열립니다(아래) | 곡선 객체. 처음 곡선에서 value(0.5)는 0 |
json | 속성 이름 아래에 schema의 항목마다 칸이 묶여 나옵니다 | 객체. 예: { speed: 2, label: 'hi' } |
curve 칸을 누르면 곡선 편집 창이 열립니다. 위에 Type(처음 값 Spline)과 오른쪽의 Value(빨강) 표시, 가운데에 세로 -5~5·가로 0.0~1.0 격자가 있습니다. 처음 곡선은 0, 0의 점 하나와 수평선입니다. 아래에는 고른 점의 Time·Value 칸과 버튼 4개(눈, 설정, 복사, 붙여넣기)가 있습니다(2026-10-30 실측).
json 속성은 schema에 묶을 항목을 적습니다. 2026-10-30 실측에서 schema에 speed(number, default: 2)와 label(string, default: 'hi')을 넣자, 에디터 칸에는 0과 빈칸으로 보였지만 Launch한 게임에서는 기본값 { speed: 2, label: 'hi' }가 쓰였습니다(1회). 칸이 비어 보여도 고치지 않았다면 코드의 default가 적용됩니다.
AttrTest.attributes.add('cfg', {
type: 'json',
schema: [
{ name: 'speed', type: 'number', default: 2 },
{ name: 'label', type: 'string', default: 'hi' }
]
});
칸에 반영하기: PARSE
속성을 추가하거나 바꾼 뒤 코드를 저장하면, 스크립트 에셋의 SCRIPTS 칸에 속성 이름이 나옵니다. 실측에서 Save를 누르자 playHit 아래에 slotName이 바로 나왔습니다(1회).
저장한 뒤에도 엔티티의 SCRIPT 칸에 새 속성이 안 보이면, 스크립트 에셋을 고르고 SCRIPTS 제목줄의 PARSE를 누릅니다. 코드를 다시 읽어 속성 목록을 새로 만듭니다. 스크립트를 고친 직후 바로 확인하고 싶을 때 씁니다.