R3 ๊ด€๋ จ ํ† ๋ง‰๊ธ€ ์ฐ”๋”์ฐ”๋” ์‹ธ๋ฉด์„œ ๋„๋ฐฐํ•  ๋ฐ”์— ๊ฑ ํ•œ๋ฐฉ์— ์จ๋ด„


1. ์–ด๋””๋‹ค ์“ฐ๋Š”๊ฑด๊ฐ€?


์ฃผ๋กœ ์œ ์•„์ด ๋งŒ๋“ค๋•Œ ์”€



2. ์„ค์น˜๋ฒ•


์š”์ฆ˜ ์‹œ๋Œ€์— ํด๋กœ๋“œ ์ฝ”๋“œ๋‚˜ ์ฝ”๋ฑ์Šค์—๊ฒŒ ์‹œํ‚ค๋ฉด ๋จ R3์„ค์น˜ํ•ด์ค˜ ๋ผ๊ณ  ํ•˜๋ฉด ์•Œ์•„์„œ ํ•จ




3. ์‚ฌ์šฉ๋ฒ•


ReactiveProperty<int> ์ฒด๋ ฅ = new(); // ์ด์ œ๋ถ€ํ„ฐ ์ด๊ฑด ๋ณ€์ˆ˜์ด์ž ์ด๋ฒคํŠธ๊ฐ€ ๋จ


์ฒด๋ ฅ.Subscribe(hp => ์ฒด๋ ฅ์œ ์•„์ด.text = hp.ToString()); //์ฒด๋ ฅ ์œ ์•„์ด์— ํ˜„์žฌ HP ๋ฐ˜์˜์‹œ์ž‘.ย 


์ฒด๋ ฅ.Value = 100; // ์ดˆ๊ธฐ ์ฒด๋ ฅ ๋Œ€์ž…


์ฒด๋ ฅ.Value -= 10; // ์ฒด๋ ฅ 10 ๊นŽ์ž„. ์ด ์ˆœ๊ฐ„ ์ž๋™์œผ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœํ–‰๋˜๋ฉด์„œ ์ฒด๋ ฅ์œ ์•„์ด๋„ ๋ฐ”๋€œ.


if(์ฒด๋ ฅ.Value > 50) // ํ˜„์žฌ๊ฐ’ ์กฐํšŒ๋„ ๊ฐ€๋Šฅ



์•„๋ž˜์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์™€ ์ด๋ฒคํŠธ ๋‘˜๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์ด ReactiveProperty<int> ์— ๋ณ€์ˆ˜์™€ ์ด๋ฒคํŠธ ๋‘˜์ด ํ•ฉ์ณ์ ธ ์žˆ๋‹ค๋Š” ์†Œ๋ฆฌ์ž„.


ย  int ์ฒด๋ ฅ; // ๋ณ€์ˆ˜๋”ฐ๋กœ

ย  Action<int> ์ฒด๋ ฅ๋ณ€๊ฒฝ์ด๋ฒคํŠธ; // ์ด๋ฒคํŠธ ๋”ฐ๋กœย 


ย  ReactiveProperty<int> ์ฒด๋ ฅ์ŠคํŠธ๋ฆผ // ๋ณ€์ˆ˜๋ž‘ ์ด๋ฒคํŠธ๊ฐ€ ํ•˜๋‚˜๋กœ



ย  ย  ์ฒด๋ ฅ -= 20; // ๋ถˆํŽธํ•˜๊ฒŒย 

ย  ย  ์ฒด๋ ฅ๋ณ€๊ฒฝ์ด๋ฒคํŠธ.Invoke(์ฒด๋ ฅ); // ๋‘๋ฒˆ์”ฉ ํ•˜๋˜๊ฑธ


ย  ย  ์ฒด๋ ฅ์ŠคํŠธ๋ฆผ.Value -= 20; // ํ•œ๋ฒˆ์— ๋œ๋‹ค๋Š”๊ฑฐ์ž„



4. ์ด๋ฒคํŠธ ๊ตฌ๋… ํ•ด์ œ๋ฒ•


IDisposable ๊ตฌ๋… = ์ฒด๋ ฅ.Subscribe(hp => ์ฒด๋ ฅ์œ ์•„์ด.text = hp.ToString()); // ์ด๋ ‡๊ฒŒ ๊ตฌ๋…์„ ๋ฐ›์•„๋†“๊ณ 

๊ตฌ๋….Dispose() // ์ด๋ ‡๊ฒŒ ๊ตฌ๋…ํ•ด์ œ


ํด๋ž˜์Šค๊ฐ€ MonoBehaviour๋ฉด

ย ์ฒด๋ ฅ.Subscribe(hp => ์ฒด๋ ฅ์œ ์•„์ด.text = hp.ToString()).AddTo(this); // ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ ํŒŒ๊ดด๋  ๋•Œ ์ž๋™ ๊ตฌ๋…ํ•ด์ œ


--๋!--




๊ฑ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์จ๋„ ๊ฐœํŽธํ•จ

์ด๋Ÿฐ๋ฐ ์“ฐ๋ฉด ๋จ


ReactiveProperty<int> ์ฒด๋ ฅ = new();

ReactiveProperty<int> ๋งˆ๋‚˜ = new();

ReactiveProperty<float> ์‚ฌ์šด๋“œ๋ณผ๋ฅจ = new();

ReactiveProperty<bool> ํ’€์Šคํฌ๋ฆฐ = new();


public enum ์–ธ์–ด

{

ย  ย ํ•œ๊ตญ์–ด,

ย  ย ์˜์–ด,

ย  ย ์ผ๋ณธ์–ด,

ย  ย ์ค‘๊ตญ์–ด

}ย 

ReactiveProperty<์–ธ์–ด> ์–ธ์–ด์„ค์ • = new();


์ด ์ด์ƒ ์•ˆ ๋ฐฐ์›Œ๋„ ๋จ

์ด๊ฑฐ ๋” ๋ฐฐ์šธ ์‹œ๊ฐ„์— ๊ฑ UniTask๋‚˜ Linq DoTween ๋ฐฐ์šฐ๋Š”๊ฒŒ ๊ฐ€์„ฑ๋น„ ์ข‹์Œ



๊ทผ๋ฐ


1. ๋‚ด๊ฐ€ ์ด๋ฏธ UniTask๋ž‘ Linq DoTween์€ ์ถฉ๋ถ„ํžˆ ๋ฐฐ์› ๋‹ค

2. ์žฌ๋ฐŒ๋Š”๊ฑฐ ์ข€ ๋งŒ์ ธ๋ณด๊ณ  ์‹ถ๋‹ค ๊ทธ๋Ÿฌ๋ฉด



AI์—๊ฒŒ ์ด ์ˆœ์„œ๋กœ ํ•˜๋‚˜์”ฉ ๋ฌผ์–ด๋ณด๋ฉด ๋จ


1.์“ฐ๋กœํ‹€ํผ์ŠคํŠธ ์จ์„œ ๋ฒ„ํŠผ ๊ด‘ํด ๊ธˆ์ง€ ํ•˜๊ฑฐ๋‚˜ ํšจ๊ณผ์Œ ์žฌ์ƒ ์ฟจ๋‹ค์šด ์ฃผ๋Š” ๋ฒ•

2.๋จธ์ง€ ์จ์„œ ์œ ์•„์ด ๋ฒ„ํŠผ ์ž…๋ ฅ์ด๋ž‘ ํ‚ค๋ณด๋“œ์ž…๋ ฅ ๋ฌถ๋Š”๋ฒ•

3.์ปด๋ฐ”์ธ๋ ˆ์ดํ‹ฐ์ŠคํŠธ ์จ์„œ ๊ฒŒ์ž„ ์˜ต์…˜๊ฐ’ ๋ฐ”๋€Œ๋ฉด ์ž๋™์ €์žฅ ํ•˜๊ฑฐ๋‚˜ ํ€˜์ŠคํŠธ ์™„๋ฃŒ ์กฐ๊ฑด ์ทจํ•ฉํ•˜๋Š” ๋ฒ•ย 

4.์…€๋ ‰ํŠธ+ํผ์ŠคํŠธ ์—์ด์‹ฑํฌ ์จ์„œ ์œ ๋‹ˆํ…Œ์Šคํฌ๋ž‘ R3 ์‹œ๋„ˆ์ง€ ํšจ๊ณผ ๋‚ด๋Š” ๋ฒ•

5. SubscribeAwait + AwaitOperation