Create, Compete & Win at Redbrick Connect 2024! ๐ŸŽ‰

Signal

์Šคํฌ๋ฆฝํŠธ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ๊ฐ„์˜ ํ†ต์‹ ์— ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์— ์กด์žฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ Signal์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ„น๏ธ

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ๊ฐ„์˜ Signal ์ „๋‹ฌ์—๋Š” Event Manager ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์†Œ๋“œ

.send()

.send(name, params)

name์— ํ•ด๋‹นํ•˜๋Š” Signal๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. Signal๋Š” ํด๋ผ์ด์–ธํŠธ ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด ๋˜๋Š” ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. params ์˜ต์…˜์„ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.addListener()

.addListener(name, callback)

name์— ํ•ด๋‹นํ•˜๋Š” Signal๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ์‹คํ–‰ํ•  ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์ „์†ก ์‹œ ๋ณด๋‚ธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๋ฅผ ๋ฐ›์•„ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

.removeListener()

.removeListener(name, callback)

name์— ํ•ด๋‹นํ•˜๋Š” Signal์— ๋Œ€ํ•ด ํŠน์ • ํ•จ์ˆ˜๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค๋ฉด, ๋“ฑ๋ก๋œ ํ•จ์ˆ˜ ๋ชฉ๋ก์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ

  • ObjectA
// This Object listens signal
function Start() {
  REDBRICK.Signal.addListener("MOVE", (params) => {
    this.move(params.x, params.y, params.z, params.duration);
  });
}
  • ObjectB
// This Object sends signal
function OnKeyDown(event) {
  if (event.code === "KeyM") {
    REDBRICK.Signal.send("MOVE", { x: 0, y: 1, z: 0, duration: 1 });
  }
}