Data Streaming - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki

๊ฐœ์š”

  • ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋งŒ๋“  ๋งต๊ณผ ๊ฐ™์ด ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†กํ•ด์•ผ ํ•  ๊ฒฝ์šฐ

    • ๋ถ€์ ํ•ฉ ๋„คํŠธ์›Œํฌ ์†์„ฑ(Networked Properties), ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(Remote Procedure Calls, RPCs)
    • ์ ํ•ฉ Fusion์˜ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ API ์‚ฌ์šฉ
  • NetworkRunner์˜ SendReliableDataToPlayer์™€ SendReliableDataToServer ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฐ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด ์ „์†ก

// ์ „์†กํ•ด์•ผ ํ•  ํฐ ๋ฐ์ดํ„ฐ
byte[] largeData = new byte[10000];

// ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๊ณ ์œ  ํ‚ค๋กœ 4๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ œ๊ณต
var key = ReliableKey.FromInts(42, 0, 0, 0);

// ๊ณต์œ  ๋ชจ๋“œ์—์„œ ๋˜๋Š” ์„œ๋ฒ„/ํ˜ธ์ŠคํŠธ๋กœ ํ”Œ๋ ˆ์ด์–ด์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก
runner.SendReliableDataToPlayer(playerRef, key, largeData);

// ํด๋ผ์ด์–ธํŠธ๋กœ์„œ ์„œ๋ฒ„/ํ˜ธ์ŠคํŠธ์— ๋ฐ์ดํ„ฐ ์ „์†ก
runner.SendReliableDataToServer(key, largeData);
  1. ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ์„œ ์„œ๋ฒ„/๋Œ€์ƒ ํด๋ผ์ด์–ธํŠธ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ๋œ ํ›„ ์žฌ์กฐ๋ฆฝ
  2. ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์‹ ๋˜๋ฉด, INetworkRunnerCallbacks.OnReliableDataReceived ์ฝœ๋ฐฑ ํ˜ธ์ถœ
  • ๋ฐ์ดํ„ฐ ์ „์†ก ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ์ฝœ๋ฐฑ ์ œ๊ณต
public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ReliableKey key, ArraySegment<byte> data) { }

public void OnReliableDataProgress(NetworkRunner runner, PlayerRef player, ReliableKey key, float progress) { }

์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๋ณ‘๋ ฌ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์€ 16๋ฐ”์ดํŠธ์˜ ํ‚ค(๋„ค ๊ฐœ์˜ int ๋˜๋Š” ๋‘ ๊ฐœ์˜ ulong์œผ๋กœ ์ƒ์„ฑ๋จ)๋กœ ์‹๋ณ„

โš ๏ธ **GitHub.com Fallback** โš ๏ธ