OasisW매뉴얼 English
섹션 9. 스크립팅 레퍼런스

스크립트 속성 정의하기

스크립트 속성(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숫자 범위. 주면 숫자 칸 옆에 밀대가 생깁니다
arraytrue면 여러 값을 담는 목록 칸. 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' });
SCRIPT 칸의 attrTest. 이동 속도 밀대, label 글자 칸, loop 체크, tint 색 견본, offset 숫자 칸 3개, target Select Entity, clip 에셋 칸, points 목록, ease 곡선
① title과 min·max ② rgba ③ vec3 ④ entity ⑤ asset ⑥ array ⑦ curve
type칸 모양게임에서 받은 값
number숫자 칸. min·max를 주면 밀대가 붙습니다3
string글자 칸'점수'
boolean체크 칸true
rgb, rgba색 견본색 객체. toString()이 #ff8000
vec2, vec3, vec4숫자 칸 2~4개벡터. [0, 1, 0]
entitySelect 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 실측).

curve 속성의 곡선 편집 창. Type Spline, Value 표시, 세로 -5~5 가로 0.0~1.0 격자, 0에 있는 빨간 점과 수평선, 아래 Time·Value 칸과 버튼 4개
① Type ② 곡선 격자 ③ 고른 점의 Time·Value

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를 누릅니다. 코드를 다시 읽어 속성 목록을 새로 만듭니다. 스크립트를 고친 직후 바로 확인하고 싶을 때 씁니다.

다음으로

원고 scripting/define-attributes.html