{"id":1458,"date":"2022-07-06T07:47:19","date_gmt":"2022-07-05T22:47:19","guid":{"rendered":"http:\/\/yoonhada.com\/?p=1458"},"modified":"2023-12-26T21:26:13","modified_gmt":"2023-12-26T12:26:13","slug":"unirx-%ec%9e%85%eb%ac%b8-5-%eb%b6%80-%ec%bd%94%eb%a3%a8%ed%8b%b4%ea%b3%bc-%ed%95%a8%ea%bb%98","status":"publish","type":"post","link":"http:\/\/yoonhada.com\/?p=1458","title":{"rendered":"UniRx \uc785\ubb38 5 \ubd80 &#8211; \ucf54\ub8e8\ud2f4\uacfc \ud568\uaed8"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/yoonhada.com\/?p=1425\">UniRx \uc785\ubb38 \uc2dc\ub9ac\uc988 \ubaa9\ucc28\ub294 \uc774\ucabd<\/a><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">0. \uc774\uc804 \ubcf5\uc2b5<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c0\ub09c\ubc88\uc5d0\ub294 Update()\ub97c \uc5b4\ub5bb\uac8c Observable\ub85c \ubcc0\ud658\ud558\uc5ec \uc774\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0 \uc124\uba85 \ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88\uc5d0\ub294 \ud55c \uac78\uc74c \ub354 \ub098\uc544\uac00 \ucf54\ub8e8\ud2f4\uacfc \ud568\uaed8 UniRx\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">1. \ucf54\ub8e8\ud2f4\uacfc UniRx<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Unity\ub294 \uae30\ubcf8\uc801\uc73c\ub85c &#8220;\ucf54\ub8e8\ud2f4&#8221;\uc774\ub77c\ub294 \uae30\ub2a5\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc740 \ubcf8\ub798\ub294 \uc774\ud130\ub808\uc774\ud130 \ucc98\ub9ac\ub97c \uad6c\ud604\ud558\ub294\ub370 \uc0ac\uc6a9\ud558\ub294&nbsp;<code>IEnumerator<\/code>\uc640&nbsp;<code>yield \ud0a4\uc6cc\ub4dc<\/code>\ub97c \ud65c\uc6a9\ud558\uc5ec Unity\uc758&nbsp;<strong>\uc8fc \uc2a4\ub808\ub4dc\uc5d0\uc11c<\/strong>&nbsp;\ube44\ub3d9\uae30 \ucc98\ub9ac \uac19\uc740 \uac83\uc744 \uc2e4\ud604\ud558\ub294 \uae30\ub2a5 \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(\uac04\ud639 \ucc29\uac01\ud558\uace0 \uc788\ub294 \uc0ac\ub78c\uc774 \uc788\uc9c0\ub9cc, \ucf54\ub8e8\ud2f4\uc5d0 \uc2e4\ud589\ub418\ub294 \uc791\uc5c5\uc740 Unity\uc758 \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub429\ub2c8\ub2e4. Update()\uc640 \ube44\uc2b7\ud55c \ucc98\ub9ac\ub85c \uc2e4\ud589 \ud0c0\uc774\ubc0d\ub3c4 \ub300\ubd80\ubd84 \uac19\uc2b5\ub2c8\ub2e4.&nbsp;<a href=\"https:\/\/docs.unity3d.com\/Manual\/ExecutionOrder.html\" target=\"_blank\" rel=\"noreferrer noopener\">\ucc38\uace0<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc9c0\uae08\uae4c\uc9c0 \uc18c\uac1c\ud574\uc628 UniRx\ub294 \ucf54\ub8e8\ud2f4\uacfc \ubcd1\ud589\ud558\uc5ec \uc801\uc6a9\ud558\uba74 \ud55c\uce35 \ub354 \ud45c\ud604\uc758 \ud3ed\uc744 \ub113\ud790 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 UniRx\ub294&nbsp;<strong>\uc120\uc5b8\uc801<\/strong>\uc73c\ub85c \uae30\uc220\ud55c \uc2a4\ud2b8\ub9bc\uc740 if \ubd84\uae30\ud560\uc218 \uc5c6\uac70\ub098, \uc2a4\ud2b8\ub9bc\uc758 \uacb0\uacfc\ub97c \uc774\uc6a9\ud558\uc5ec \uadf8\ub300\ub85c&nbsp;<strong>\uc808\ucc28\uc801<\/strong>&nbsp;\ucc98\ub9ac\uc5d0 \uc5f0\uacb0\ud558\ub294 \ub4f1\uc758 \ucc98\ub9ac\uac00 \uc5b4\ub824\uc6e0\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ucf54\ub8e8\ud2f4\uacfc UniRx\ub97c \ubcd1\ud589\ud568\uc73c\ub85c\uc368 \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0 \ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4. \ub610\ud55c \ucf54\ub8e8\ud2f4\uc758 \uc808\ucc28\uc801 \ucc98\ub9ac\uc758 \uc774\uc810\uc744 \uc0b4\ub9ac\uba74\uc11c, UniRx\uc758 \uc720\uc5f0\ud55c \uc608\uc678 \ucc98\ub9ac\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\ub3c4 \uac00\ub2a5 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UniRx\uc640 \ucf54\ub8e8\ud2f4\uc758 \uc870\ud569\uc740 \uc815\ub9d0 \ud3b8\ub9ac\ud574\uc11c \uaf2d \uc0ac\uc6a9\ubc95\uc744 \uae30\uc5b5\ud558\uace0 \ud65c\uc6a9\ud588\uc73c\uba74 \uc88b\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc6a9\uc5b4 \ud574\uc124<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc120\uc5b8\uc801:<\/strong>&nbsp;\ubd80\uc791\uc6a9\uc774 \uc5c6\ub294 \ud568\uc218\ub97c \uba54\uc18c\ub4dc \uccb4\uc778\uc73c\ub85c \uc5f0\uacb0\ud574 \uc77c\ub828\uc758 \ub3d9\uc791\uc744 \uc124\uba85\ud558\ub294 \ubc29\uc2dd\n<ul class=\"wp-block-list\">\n<li>\uc7a5\uc810: \ud544\uc694\ud55c \ucc98\ub9ac\ub97c \ucc28\ub840\ub85c \uc5f0\uacb0\ud574 \uc4f0\ub294 \uac83\ub9cc\uc73c\ub85c \uad6c\ud604\ub418\uc5b4 \uac00\ub3c5\uc131\uc774 \ub192\ub2e4.<\/li>\n\n\n\n<li>\ub2e8\uc810: \ud544\uc694\ud55c \uc791\uc5c5\uc774 \ub108\ubb34 \ubcf5\uc791\ud558\uba74 \uae30\uc874 \ud568\uc218\ub9cc\uc73c\ub85c\ub294 \uad6c\ud604\ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc808\ucc28\uc801<\/strong>: \uc0c1\ud0dc \ubcc0\uc218\ub098 for\uc640 if\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc791\uc744 \uc804\ubd80 \uc124\uba85\ud558\ub294 \ubc29\uc2dd\n<ul class=\"wp-block-list\">\n<li>\uc7a5\uc810: \ub0b4 \ub9c8\uc74c\ub300\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4, \uc5b4\ub5a4 \ucc98\ub9ac\ub3c4 \uac00\ub2a5\ud558\ub2e4.<\/li>\n\n\n\n<li>\ub2e8\uc810: \ubcf5\uc7a1\ud55c \uae30\uc220\uc774 \uc99d\uac00\ud558\uace0 \uac00\ub3c5\uc131\uc774 \ub0ae\uc544\uc9c4\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">[\uc5ed\uc8fc]<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc808\ucc28\uc801 \ud504\ub85c\uadf8\ub798\ubc0d: &#8220;\ub8e8\ud2f4&#8221;, &#8220;\uc11c\ube0c\ub8e8\ud2f4&#8221;, &#8220;\uba54\uc18c\ub4dc&#8221;, &#8220;\ud568\uc218&#8221; \ub4f1 &#8220;\ud504\ub85c\uc2dc\uc800&#8221;\ub97c \uc774\uc6a9\ud55c \ud504\ub85c\uadf8\ub798\ubc0d \ud328\ub7ec\ub2e4\uc784.<\/li>\n\n\n\n<li>\uc774\ud130\ub808\uc774\ud130: \uceec\ub809\uc158\uc5d0 \ub300\ud574 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ubc18\ubcf5\uc744 \uc218\ud589, yield return \ubb38\uc744 \uc0ac\uc6a9\ud558\uace0 \uac01 \uc694\uc18c\ub97c \ud55c \ubc88\uc5d0 \ud558\ub098\uc529 \ubc18\ud658\ud55c\ub2e4. \uc774\ud130\ub808\uc774\ud130\ub294 \ud604\uc7ac \uc704\uce58\ub97c \uae30\uc5b5\ud558\uace0 \ub2e4\uc74c \ubc18\ubcf5\uc5d0\uc11c\ub294 \ub2e4\uc74c \uc694\uc18c\ub97c \ubc18\ud658\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">2. \ucf54\ub8e8\ud2f4\uc5d0\uc11c IObservable\ub85c \ubcc0\ud658<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b0\uc120 \ucf54\ub8e8\ud2f4\uc5d0\uc11c IObservable\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucf54\ub8e8\ud2f4\uc744 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\uba74 \ucf54\ub8e8\ud2f4\uc758 \uacb0\uacfc\ub85c \uadf8\ub300\ub85c UniRx \uc624\ud37c\ub808\uc774\ud130 \uccb4\uc778\uc5d0 \uc5f0\uacb0\ud558\uc5ec \uc8fc\ub294 \uac83\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \ubcf5\uc7a1\ud55c \ud589\ub3d9\uc744 \ud558\ub294 \uc2a4\ud2b8\ub9bc\uc744 \uc0dd\uc131 \ud560 \ub54c\ub294 \ucf54\ub8e8\ud2f4\uc5d0\uc11c \uad6c\ud604\ud558\uace0 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \ucde8\ud558\ub294 \uac83\uc774 UniRx \uc624\ud37c\ub808\uc774\ud130 \uccb4\uc778\ub9cc\uc73c\ub85c \uc2a4\ud2b8\ub9bc\uc744 \uad6c\ucd95\ud558\ub294 \uac83\ubcf4\ub2e4 \uac04\ub2e8\ud558\uac8c \ucc98\ub9ac\ub418\ub294 \uacbd\uc6b0\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u2170-\ucf54\ub8e8\ucc10-\uc885\ub8cc-\uc2dc\uac04\uc744-\uc2a4\ud2b8\ub9bc\uc73c\ub85c-\uae30\ub2e4\ub9b0\ub2e4\">\u2160. \ucf54\ub8e8\ud2f4\uc885\ub8cc \uc2dc\uac04\uc744 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \uae30\ub2e4\ub9b0\ub2e4.<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%E2%85%B0-%EC%BD%94%EB%A3%A8%EC%B0%90-%EC%A2%85%EB%A3%8C-%EC%8B%9C%EA%B0%84%EC%9D%84-%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EA%B8%B0%EB%8B%A4%EB%A6%B0%EB%8B%A4\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ud558\ub294 \uac83:&nbsp;<strong>Observable.FromCoroutine<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc:&nbsp;<code>IObservable&lt;Unit&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab \ubc88\uc9f8 \uc778\uc218:&nbsp;<code>Func&lt;IEnumerator&gt; coroutine<\/code>&nbsp;\ucf54\ub8e8\ud2f4 \ubcf8\uccb4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \ubc88\uc9f8 \uc778\uc218:&nbsp;<code>bool publishEveryYield = false<\/code>&nbsp;yield \ud55c \uc2dc\uac04\uc5d0 OnNext\ub97c \ubc1c\ud589 \ud558\ub294\uac00?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(false\ub294 OnCompleted \uc9c1\uc804\uc5d0 1\ubc88\ub9cc \ubc1c\uae09 default = false)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Observable.FromCoroutine<\/code>\uc744 \uc774\uc6a9\ud558\uba74 \ucf54\ub8e8\ud2f4 \uc885\ub8cc \uc2dc\uac04\uc744 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ucc98\ub9ac \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucf54\ub8e8\ud2f4 \uc885\ub8cc \ud0c0\uc774\ubc0d\uc758 \ud1b5\uc9c0\ub97c \ud544\uc694\ub85c \ud560 \ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System.Collections;\nusing UniRx;\nusing UnityEngine;\n\npublic class ConvertFromCoroutine : MonoBehaviour\n{\n    private void Start() =>\n        Observable.FromCoroutine(NantokaCoroutine, publishEveryYield: false)\n            .Subscribe(\n                _ => Debug.Log(\"OnNext\"),\n                () => Debug.Log(\"OnCompleted\")\n            ).AddTo(gameObject);\n\n    private IEnumerator NantokaCoroutine()\n    {\n        Debug.Log(\"Coroutine started\");\n        \n        \/\/ \uc5b4\ub5a4 \ucc98\ub9ac\ub97c \ud558\uace0 \uae30\ub2e4\ub9ac\uace0 \uc788\ub294 \uc608\n        yield return new WaitForSeconds(3);\n        \n        Debug.Log(\"Coroutine finished.\");\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacb0\uacfc<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Coroutine started.\nCoroutine finished.\nOnNext\nOnComplted<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Observable.FromCoroutine<\/code>\ub294&nbsp;<strong>Subscribe \ub420 \ub54c\ub9c8\ub2e4 \uc0c8\ub86d\uac8c \ucf54\ub8e8\ud2f4\uc744 \uc0dd\uc131\ud558\uace0 \uc2dc\uc791\ud558\uac8c \ub41c\ub2e4\ub294 \uac83\uc5d0 \uc8fc\uc758\ud558\uc2ed\uc2dc\uc624.<\/strong>&nbsp;\ucf54\ub8e8\ud2f4 \ud558\ub098\ub9cc \uc2dc\uc791 \uc2a4\ud2b8\ub9bc\uc744 \uacf5\uc720\ud558\uace0 \uc774\uc6a9\ud558\uace0 \uc2f6\ub2e4\uba74&nbsp;\uc2a4\ud2b8\ub9bc\uc758 Hot \ubcc0\ud658\uc774 \ud544\uc694 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub367\ubd99\uc5ec&nbsp;<code>Observable.FromCoroutine<\/code>&nbsp;\uc5d0\uc11c \uc2dc\uc791\ud55c \ucf54\ub8e8\ud2f4\uc740 Subscribe\ub97c Dispose\ud558\uba74 \uc790\ub3d9\uc73c\ub85c \uc911\uc9c0 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9cc\uc57d \ucf54\ub8e8\ud2f4\uc5d0\uc11c \uc790\uc2e0\uc758 \uc2a4\ud2b8\ub9bc\uc774 Dispose \ub41c \uac83\uc744 \uac10\uc9c0\ud558\ub824\uba74 \ucf54\ub8e8\ud2f4\uc758 \uc778\uc218&nbsp;<code>CancellationToken<\/code>\uc744 \uc804\ub2ec\ud558\uc5ec Dispose\ub97c \uac10\uc9c0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub54c CancellationToken\uc740&nbsp;<code>Observable.FromCoroutine<\/code>&nbsp;\uc5d0\uc11c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Observable.FromCoroutine(token => NantokaCoroutine(token))  \/\/ token\uc774 CancellationToken<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u2171-\ucf54\ub8e8\ud2f4\uc758-yield-return-\uacb0\uacfc\ub97c-\ucd94\ucd9c\">\u2161. \ucf54\ub8e8\ud2f4\uc758 yield return \uacb0\uacfc\ub97c \ucd94\ucd9c<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%E2%85%B1-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%98-yield-return-%EA%B2%B0%EA%B3%BC%EB%A5%BC-%EC%B6%94%EC%B6%9C\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ud558\ub294 \uac83:&nbsp;<strong>Observable.FromCoroutineValue&lt;T&gt;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc:&nbsp;<code>IObservable&lt;T&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab \ubc88\uc9f8 \uc778\uc218:&nbsp;<code>Func&lt;IEnumerator&gt; coroutine<\/code>&nbsp;\ucf54\ub8e8\ud2f4 \ubcf8\uccb4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \ubc88\uc9f8 \uc778\uc218:&nbsp;<code>bool nullAsNextUpdate = true<\/code>&nbsp;null\uc77c \ub54c OnNext\ub97c \ubc1c\ud589\ud558\uc9c0 \uc54a\ub294\ub2e4. default = true<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Observable.FromCoroutineValue&lt;T&gt;<\/code>\ub97c \uc774\uc6a9\ud558\uba74 \ucf54\ub8e8\ud2f4\uc758 yield return\uc73c\ub85c \ubc18\ud658 \ub41c \uac12\uc744 \uaebc\ub0b4 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>yield return<\/code>\ub294 \ud638\ucd9c \ub420 \ub54c\ub9c8\ub2e4 1 \ud504\ub808\uc784 \uc815\uc9c0\ud558\ub294 \uc131\uc9c8\uc774 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc774\ub97c \uc774\uc6a9\ud558\uc5ec \ud55c \ud504\ub808\uc784 \uc529 \uac12\uc744 \ubc1c\ud589 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System.Collections;\nusing System.Collections.Generic;\nusing UniRx;\nusing UnityEngine;\n\npublic class ConvertFromCoroutine2 : MonoBehaviour\n{\n\/\/ \uc774\ub3d9 \uc88c\ud45c \ubaa9\ub85d\n    [SerializeField] private List&lt;Vector2> moveList;\n\n    private void Start() =>\n        Observable.FromCoroutineValue&lt;Vector2>(MovePositionCoroutine)\n            .Subscribe(x => Debug.Log(x));\n\n\/\/\/ &lt;summary>\n\/\/\/ \ubaa9\ub85d\uc5d0\uc11c \uac12\uc744 1 \ud504\ub808\uc784\uc529 \uaebc\ub0b4\ub294 \ucf54\ub8e8\ud2f4\n\/\/\/ &lt;\/summary>\n\/\/\/ &lt;returns>&lt;\/returns>\n    private IEnumerator MovePositionCoroutine()\n    {\n        foreach (var v in moveList)\n        {\n            yield return v;\n        }\n\n\/\/ \u2191\uc758 foreach \ubb38\uc740 \ud1b5\uc9f8\ub85c\n\/\/ \"return moveList.GetEnumerator ();\"\n\/\/ \ub85c \uace0\uccd0 \uc368\ub3c4 \ub41c\ub2e4.\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacb0\uacfc<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"336\" height=\"581\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-26-1-b76680d648a3e3b5fb76e4e6506bf04c.png\" alt=\"\" class=\"wp-image-1780\" srcset=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-26-1-b76680d648a3e3b5fb76e4e6506bf04c.png 336w, http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-26-1-b76680d648a3e3b5fb76e4e6506bf04c-173x300.png 173w\" sizes=\"auto, (max-width: 336px) 100vw, 336px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u2172-\ucf54\ub8e8\ud2f4-\ub0b4\ubd80\uc5d0\uc11c-onnext\ub97c-\uc9c1\uc811-\ubc1c\ud589\ud558\uae30\">\u2162. \ucf54\ub8e8\ud2f4 \ub0b4\ubd80\uc5d0\uc11c OnNext\ub97c \uc9c1\uc811 \ubc1c\ud589\ud558\uae30<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%E2%85%B2-%EC%BD%94%EB%A3%A8%ED%8B%B4-%EB%82%B4%EB%B6%80%EC%97%90%EC%84%9C-onnext%EB%A5%BC-%EC%A7%81%EC%A0%91-%EB%B0%9C%ED%96%89%ED%95%98%EA%B8%B0\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ud558\ub294 \uac83:&nbsp;<strong>Observable.FromCoroutine&lt;T&gt;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc:&nbsp;<code>IObservable&lt;T&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab \ubc88\uc9f8 \uc778\uc218:&nbsp;<code>Func&lt;IObserver&lt;T&gt;, IEnumerator&gt; coroutine<\/code>&nbsp;<code>IObserver&lt;T&gt;<\/code>\ub97c \uc778\uc218\ub85c \ucde8\ud558\ub294 \ucf54\ub8e8\ud2f4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Observable.FromCoroutine&lt;T&gt;<\/code>\uc740&nbsp;<code>IObserver&lt;T&gt;<\/code>\ub97c \uc81c\uacf5\ud558\ub294 \uad6c\ud604\ub3c4 \uc874\uc7ac \ud569\ub2c8\ub2e4. \uc774&nbsp;<code>IObserver&lt;T&gt;<\/code>\ub97c \ucf54\ub8e8\ud2f4\uc5d0 \uc804\ub2ec\ud558\uc5ec&nbsp;<strong>\ucf54\ub8e8\ud2f4\uc758 \ud2b9\uc815 \ud0c0\uc774\ubc0d\uc5d0 OnNext\ub97c \ubc1c\ud589 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uba74&nbsp;<strong>\ub0b4\ubd80 \uad6c\ud604\uc740 \uc808\ucc28\uc801 \ube44\ub3d9\uae30 \ucc98\ub9ac\ub85c \uc4f0\uace0 \uc678\ubd80\uc5d0\uc11c\ub294 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ucde8\uae09\ud558\ub294 \uac83 \ucc98\ub7fc<\/strong>&nbsp;\ucf54\ub8e8\ud2f4\uacfc UniRx \ubaa8\ub450\uc758 \uc7a5\uc810\uc744 \ucde8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9e4\uc6b0 \ud3b8\ub9ac\ud558\uace0 \ubc94\uc6a9\uc801\uc778 \uae30\ub2a5\uc774\ubbc0\ub85c \uaf2d \uae30\uc5b5\ud558\uc138\uc694.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c OnCompleted\ub294 \uc790\ub3d9\uc73c\ub85c \ubc1c\uae09\ub418\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0, \ucf54\ub8e8\ud2f4 \uc885\ub8cc \uc2dc\uc810\uc5d0\uc11c \uc2a4\uc2a4\ub85c OnCompleted\ub97c \ubc1c\uae08\ud574 \uc904 \ud544\uc694\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections;\nusing UniRx;\nusing UnityEngine;\n\npublic class ConvertFromCoroutine3 : MonoBehaviour\n{\n    \/\/ \uc77c\uc2dc \uc815\uc9c0 \ud50c\ub798\uadf8, true\uc778 \uacbd\uc6b0 \ud0c0\uc774\uba38 \uc911\uc9c0\n    public bool IsPaused;\n    \n    private void Start() =>\n        Observable.FromCoroutine&lt;long>(observer => CountCoroutine(observer))\n            .Subscribe(x => Debug.Log(x))\n            .AddTo(gameObject);\n\n    \/\/\/ &lt;summary>\n    \/\/\/ \uc77c\uc2dc \uc815\uc9c0 \ud50c\ub798\uadf8\uac00 \uc9c0\ub098\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\uc758 \uc2dc\uac04(\ucd08)\ub97c \uacc4\uc0b0\ud558\uc5ec \uc54c\ub824\uc900\ub2e4.\n    \/\/\/ &lt;\/summary>\n    \/\/\/ &lt;param name=\"observer\">\uc54c\ub9bc IObserver&lt;\/param>\n    \/\/\/ &lt;returns>&lt;\/returns>\n    IEnumerator CountCoroutine(IObserver&lt;long> observer)\n    {\n        long current = 0;\n        float deltaTime = 0;\n        \n        \/\/ Dispose\ud558\uba74 \ucf54\ub8e8\ud2f4\uc774 \uba48\ucd94\ub2c8\uae4c while(true) \ud574\ub3c4 \ubb38\uc81c\uc5c6\uc774 \uc6c0\uc9c1\uc778\ub2e4.\n        \/\/ \uae30\ubd84 \ub098\uc058\ub2e4\uba74 CancellationToken\uc744 \ubc1b\uc544 \uc774\uc6a9\ud558\uba74 \ub41c\ub2e4.\n        while (true)\n        {\n            if (!IsPaused)\n            {\n                \/\/ \uc77c\uc2dc \ud50c\ub798\uadf8\uac00 \uc9c0\ub098\uc9c0 \uc54a\uc740 \uc0ac\uc774 \uc2dc\uac04\uc744 \uce21\uc815\ud55c\ub2e4.\n                deltaTime += Time.deltaTime;\n                if (deltaTime >= 1.0f)\n                {\n                    \/\/ \ucc28\uc774\uac00 1\ucd08\ub97c \ucd08\uacfc\ud55c \uacbd\uc6b0 \uc815\uc218 \ubd80\ubd84\uc744 \uaebc\ub0b4 \uc9d1\uacc4 \ud1b5\uc9c0\ud55c\ub2e4.\n                    var integerPart = (int) Mathf.Floor(deltaTime);\n                    current += integerPart;\n                    deltaTime -= integerPart;\n                    \n                    \/\/ \uc2dc\uac04(\ucd08) \ud1b5\uc9c0\n                    observer.OnNext(current);\n                }\n            }\n            yield return null;\n        }\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacb0\uacfc<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"494\" height=\"289\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-26-2-13030d58b98592c2e9d4ebb719eedf03.gif\" alt=\"\" class=\"wp-image-1784\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(\uc77c\uc2dc \uc815\uc9c0 \ud50c\ub798\uadf8\uac00 true \ub3d9\uc548 \uce74\uc6b4\ud2b8\ub97c \uc815\uc9c0 \ud574, false\uac00 \ub418\uba74 \uc911\ub2e8\ub41c \uc774\uc804\uc758 \uce74\uc6b4\ud2b8\uc5d0\uc11c \uce21\uc815\uc744 \uc7ac\uac1c)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;\uc0c1\ud0dc\uc5d0 \uc758\uc874\ud55c \ucc98\ub9ac&#8221; \ub098 &#8220;\uc911\uac04\uc5d0 \ucc98\ub9ac\uac00 \ud06c\uac8c \ubd84\uae30\ub418\ub294 \ucc98\ub9ac&#8221; \uac19\uc740 \uac83\uc740 UniRx \uc624\ud37c\ub808\uc774\ud130 \uccb4\uc778\ub9cc\uc73c\ub85c \uad6c\ud604\ud558\uae30 \uc5b4\ub835\uace0, \uacbd\uc6b0\uc5d0 \ub530\ub77c\uc11c\ub294 \uad6c\ud604 \ubd88\uac00\ub2a5\ud55c \uacbd\uc6b0\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0 \uacbd\uc6b0 \uc774\ub807\uac8c \ucf54\ub8e8\ud2f4\uc5d0\uc11c \ub0b4\ubd80 \uad6c\ud604\uc744 \uc2e4\uc2dc\ud558\uace0 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658 \ud574\ubc84\ub9ac\ub294 \ubc29\ubc95\uc744 \ucde8\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u2173\ubcf4\ub2e4-\uc800\ub834\ud55c-\ube44\uc6a9\uc73c\ub85c-\uac00\ubcbc\uc6b4-\ucf54\ub8e8\ud2f4\uc744-\uc2e4\ud589\">\u2163.\ubcf4\ub2e4 \uc800\ub834\ud55c \ube44\uc6a9\uc73c\ub85c \uac00\ubcbc\uc6b4 \ucf54\ub8e8\ud2f4\uc744 \uc2e4\ud589<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%E2%85%B3%EB%B3%B4%EB%8B%A4-%EC%A0%80%EB%A0%B4%ED%95%9C-%EB%B9%84%EC%9A%A9%EC%9C%BC%EB%A1%9C-%EA%B0%80%EB%B2%BC%EC%9A%B4-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%84-%EC%8B%A4%ED%96%89\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ud558\ub294 \uac83:&nbsp;<strong>Observable.FromMicroCoroutine<\/strong>&nbsp;\/&nbsp;<strong>Observable.FromMicroCoroutine&lt;T&gt;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ud658 \uac12:&nbsp;<code>IObservable&lt;Unit&gt;<\/code>&nbsp;\/&nbsp;<code>IObservable&lt;T&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uccab\ubc88\uc9f8 \uc778\uc218:&nbsp;<code>Func&lt;IEnumerator&gt; coroutine<\/code>&nbsp;\/&nbsp;<code>Func&lt;IObserver&lt;T&gt;, IEnumerator&gt; coroutine<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc218:&nbsp;<code>FrameCountType frameCountType = frameCountType.Update<\/code>&nbsp;Update, FixedUpdate, EndOfFrame \uc5b4\ub290 \ud0c0\uc774\ubc0d\uc744 \uc774\uc6a9\ud560\uac83\uc778\uc9c0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Observable.FromMicroCoroutine<\/code>&nbsp;\uadf8\ub9ac\uace0&nbsp;<code>Observable.FromMicroCoroutine&lt;T&gt;<\/code>\ub294 \uac01\uac01 \uc774\uc804\uc5d0 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4.&nbsp;<code>Observable.FromCoroutine<\/code>&nbsp;\/&nbsp;<code>Observable.FromCoroutine&lt;T&gt;<\/code>\uc640 \uac70\uc758 \uac19\uc740 \ub3d9\uc791\uc744 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\ub098 \ub0b4\ubd80 \uad6c\ud604\uc740 \ud06c\uac8c \ub2e4\ub974\uba70,&nbsp;<strong>\ucf54\ub8e8\ud2f4\uc5d0\uc11c yield return null \ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc81c\uc57d\uc774 \uc788\ub294 \ub300\uc2e0 Unity \ud45c\uc900 \ucf54\ub8e8\ud2f4\uc5d0 \ube44\ud574 \ub9e4\uc6b0 \uace0\uc18d\uc73c\ub85c \ub3d9\uc791\ud558\ub294 \uad6c\uc870<\/strong>\ub85c \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uad6c\uc870\uc758 \ucf54\ub8e8\ud2f4\uc744 &#8220;<strong>\ub9c8\uc774\ud06c\ub85c\ucf54\ub8e8\ud2f4<\/strong>&#8220;\uc774\ub77c \ubd80\ub974\uba70 UniRx\uc758 \ub3c5\uc790 \uad6c\ud604\uc73c\ub85c \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>yield return null<\/code>\ub9cc \uad6c\ud604\ub418\uc5b4 \uc788\ub294 \ucf54\ub8e8\ud2f4\uc744 \ub9cc\ub4e4\uace0 \uc2dc\uc791\ud558\ub824\uba74 Unity \ud45c\uc900\uc758&nbsp;<code>StartCoroutine<\/code>&nbsp;\ubcf4\ub2e4 \uc774&nbsp;<code>Observable.FromMicroCoroutine<\/code>\ub97c \uc0ac\uc6a9\ud558\uba74 \ubcf4\ub2e4 \ub354 \uc800\ub834\ud55c \ube44\uc6a9\uc73c\ub85c \ucf54\ub8e8\ud2f4\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void Start() =>\n                Observable.FromMicroCoroutine&lt;long>(observer => CountCoroutine(observer))\n            .Subscribe(x => Debug.Log(x))\n            .AddTo(gameObject);<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\ucf54\ub8e8\ud2f4\uc5d0\uc11c IObservable\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95 \uc815\ub9ac<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ucf54\ub8e8\ud2f4\uc5d0\uc11c IObservable\ub85c \ubcc0\ud658 \ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li><code>Observable.FromCoroutine<\/code>&nbsp;\ub4f1\uc73c\ub85c \uc2e4\ud589\ud55c \ucf54\ub8e8\ud2f4\uc740&nbsp;<code>MainThreadDispatcher<\/code>\uc5d0 \uad00\ub9ac\uac00 \uc704\uc784\ub418\ubbc0\ub85c \uc218\uba85 \uad00\ub9ac\uc5d0 \uc8fc\uc758 \ud560 \ud544\uc694\uac00 \uc788\ub2e4 (AddTo \uae30\uc5b5)<\/li>\n\n\n\n<li><code>Observable.FromCoroutine<\/code>&nbsp;\ub4f1\uc740 Subscribe \ub41c \uc2dc\uc810\uc5d0\uc11c \uc0c8\ub86d\uac8c \ucf54\ub8e8\ud2f4\uc744 \uc0dd\uc131\ud558\uace0 \uc2dc\uc791\ub418\uc5b4 \ubc84\ub9ac\uae30 \ub54c\ubb38\uc5d0, 1\uac1c\uc758 \ucf54\ub8e8\ud2f4\uc744 \uacf5\uc720\ud558\uace0 \uc5ec\ub7ec \ubc88 Subscribe \ud560 \ub54c\ub294 Hot \ubcc0\ud658\uc774 \ud544\uc694\ud558\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">3. IObservable\uc5d0\uc11c \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \ubc88\uc9f8 \ubc29\ubc95\uc73c\ub85c UniRx \uc2a4\ud2b8\ub9bc\uc744 \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc2a4\ud2b8\ub9bc\uc744 \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \uae30\uc220\uc744 \uc774\uc6a9\ud558\uc5ec \ucf54\ub8e8\ud2f4\uc5d0\uc11c \uc2a4\ud2b8\ub9bc\uc758 \uc2e4\ud589 \uacb0\uacfc\ub97c \uae30\ub2e4\ub9ac\uace0 \uadf8\ub300\ub85c \uacc4\uc18d \uc9c4\ud589\ud558\ub294 \ub4f1\uc758 \uae30\uc220 \ubc29\ubc95\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;C# Task\uc640 await\uc5d0 \ud574\ub2f9\ud55c\ub2e4&#8221;\ub77c\uace0 \uac04\ub7b5\ud558\uac8c \uc0dd\uac01 \ud574\ub450\uba74 \uc88b\uc744 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\uc2a4\ud2b8\ub9bc\uc744-\ucf54\ub8e8\ud2f4\uc73c\ub85c-\ubcc0\ud658-unity-53\">\uc2a4\ud2b8\ub9bc\uc744 \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658 (Unity 5.3)<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%9D%84-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98-unity-53\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ud558\ub294 \uac83: ToYieldInstruction() (IObservable&lt;T&gt;\uc5d0 \ub300\ud55c \ud655\uc7a5 \uba54\uc11c\ub4dc)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc:&nbsp;<code>ObservableYieldInstruction&lt;T&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc218:&nbsp;<code>CancellationToken cancel<\/code>&nbsp;\ucc98\ub9ac\ub97c \uc911\ub2e8\ud55c \uacbd\uc6b0\ub294 \uc778\uc218\uc5d0 \uc804\ub2ec \ud55c\ub2e4 (\uc0dd\ub7b5\uac00\ub2a5)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc218:&nbsp;<code>bool throwOnError = false OnError<\/code>\uac00 \ubc1c\uc0dd\ud588\uc744 \ub54c \uc608\uc678 \ub0b4\uc6a9\uc744 throw \ud560 \uac83\uc778\uac00?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ToYieldInstruction<\/code>&nbsp;\ub97c \uc774\uc6a9\ud558\uc5ec \uc2a4\ud2b8\ub9bc\uc744 \ucf54\ub8e8\ud2f4\uc73c\ub85c \uc2e4\ud589 \ud55c \ub2e4\uc74c \uc2a4\ud2b8\ub9bc\uc744 \uae30\ub2e4\ub9ac\uac8c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections;\nusing UniRx;\nusing UniRx.Triggers;\nusing UnityEngine;\n\npublic class ConvertFromCoroutine : MonoBehaviour\n{\n    private void Start()\n    {\n        StartCoroutine(WaitCoroutine());\n    }\n\n    private IEnumerator WaitCoroutine()\n    {\n        \/\/ Subscribe \ub300\uc2e0 ToYieldInstruction()\uc744 \uc774\uc6a9\ud558\uc5ec\n        \/\/ \ucf54\ub8e8\ud2f4\uc73c\ub85c \uc2a4\ud2b8\ub9bc\uc744 \ucc98\ub9ac \ud560 \uc218 \uc788\uac8c \ub41c\ub2e4\n        \/\/ 1\ucd08 \uae30\ub2e4\ub9b0\ub2e4\n        Debug.Log(\"Wait for 1 second.\");\n        yield return Observable.Timer(TimeSpan.FromSeconds(1)).ToYieldInstruction();\n\n        \/\/ ToYieldInstruction()\uc740 OnCompleted\uac00 \ubc1c\ud589\ub418\uc5b4 \ucf54\ub8e8\ud2f4 \uc885\ub8cc\n        \/\/ \ub530\ub77c\uc11c OnCompleted\uac00 \ubc18\ub4dc\uc2dc \ubc1c\ud589\ub418\ub294 \uc2a4\ud2b8\ub9bc\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.\n        \/\/ \ubb34\ud55c\uc73c\ub85c \uc774\uc5b4\uc9c0\ub294 \uc2a4\ud2b8\ub9bc\uc758 \uacbd\uc6b0 First\ub098 FirstOrDefault\ub97c \uc0ac\uc6a9\ud558\uba74 \uc88b\uaca0\ub2e4.\n        Debug.Log(\"Press any key\");\n        \/\/ \uc544\ubb34 \ud0a4\ub098 \ub204\ub97c \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9b0\ub2e4\n\n        yield return this.UpdateAsObservable()\n            .FirstOrDefault(_ => Input.anyKeyDown)\n            .ToYieldInstruction();\n\n        \/\/ FirstOrDefault \uc870\uac74\uc744 \ucda9\uc871\ud558\uba74 OnNext\uc640 OnCompleted\ub97c \ubaa8\ub450 \ubc1c\ud589\ud55c\ub2e4.\n        Debug.Log(\"Pressed\");\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ToYieldInstruction<\/code>\uc740&nbsp;<strong>OnCompleted \uba54\uc2dc\uc9c0\ub97c \ubc1b\uc73c\uba74 yield return\uc744 \uc885\ub8cc\ud569\ub2c8\ub2e4.<\/strong>&nbsp;\ub530\ub77c\uc11c OnCompleted\ub97c \ubc1c\ud589\ud558\uc9c0 \uc54a\ub290 \ub05d\uc5c6\ub294 \uc2a4\ud2b8\ub9bc\uc744&nbsp;<code>ToYieldInstruction<\/code>&nbsp;\ud574 \ubc84\ub9ac\uba74 \uc601\uc6d0\ud788 \ub05d\uc5c6\ub294 \uc0c1\ud0dc\uac00 \ub418\uc5b4 \ubc84\ub9ac\uae30 \ub54c\ubb38\uc5d0 \uc8fc\uc758\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \uc2a4\ud2b8\ub9bc\uc5d0\uc11c \ubc1c\ud589\ub41c OnNext \uba54\uc2dc\uc9c0\ub97c \uc774\uc6a9\ud558\ub294 \uacbd\uc6b0&nbsp;<code>ToYieldInstruction<\/code>&nbsp;\uac00 \ubc18\ud658\ud558\ub294&nbsp;<code>ObservableYieldInstruction&lt;T&gt;<\/code>\ub85c \ubcc0\uc218\uc5d0 \uc800\uc7a5\ud55c \uacb0\uacfc\ub97c \uac00\uc838\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections;\nusing UniRx;\nusing UniRx.Triggers;\nusing UnityEngine;\n\npublic class ConvertToCoroutine2 : MonoBehaviour\n{\n    private void Start() => StartCoroutine(DetectCoroutine());\n\n    private IEnumerator DetectCoroutine()\n    {\n        Debug.Log(\"Coroutine start!\");\n        \n        \/\/ \ucf54\ub8e8\ud2f4\uc774 \uc2dc\uc791\ub418\uace0 \ub098\uc11c\n        \/\/ 3\ucd08 \uc774\ub0b4\uc5d0 \uba3c\uc800 \uc790\uc2e0\uc744 \uac74\ub4dc\ub9b0 \uac1d\uccb4\ub97c \uc5bb\ub294\ub2e4.\n        var o = this.OnCollisionEnterAsObservable()\n            .FirstOrDefault()\n            .Select(x => x.gameObject)\n            .Timeout(TimeSpan.FromSeconds(3))\n            .ToYieldInstruction(throwOnError: false);\n        \n        \/\/ Timeout\uc740 \uc9c0\uc815 \uc2dc\uac04 \uc774\ub0b4\uc5d0 \uc2a4\ud2b8\ub9bc\uc774 \uc644\ub8cc\ub418\uc9c0 \uc54a\ub294 \uacbd\uc6b0\n        \/\/ OnError\ub97c \ubc1c\ud589\ud558\ub294 \uc624\ud37c\ub808\uc774\ud130\n        \n        \/\/ \uacb0\uacfc\ub97c \uae30\ub2e4\ub9b0\ub2e4.\n        yield return o;\n\n        if (o.HasError || !o.HasResult)\n        {\n            \/\/ \uc544\ubb34\uac83\ub3c4 \uce58\uc9c0 \uc54a\uc558\ub2e4.\n            Debug.Log(\"hit object is nothing.\");\n        }\n        else\n        {\n            \/\/ \ubb54\uac00\uc5d0 \ub9de\uc558\ub2e4.\n            var hitObject = o.Result;\n            Debug.Log(hitObject.name);\n        }\n    }\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"500\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-26-3-b13c6097f79b946a9ea9e59685b71d53.gif\" alt=\"\" class=\"wp-image-1791\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"573\" height=\"500\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-26-4-1807f0259ac8267c9ea0b35298d771a9.gif\" alt=\"\" class=\"wp-image-1792\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"iobservable\uc5d0\uc11c-\ucf54\ub8e8\ud2f4\uc73c\ub85c-\ubcc0\ud658\ud558\ub294-\ubc29\ubc95-\uc815\ub9ac\">IObservable\uc5d0\uc11c \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95 \uc815\ub9ac<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#iobservable%EC%97%90%EC%84%9C-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC\">\u200b<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ToYieldInstruction \ub610\ub294 StartAsCoroutine\ub97c \uc774\uc6a9\ud558\uc5ec \uc2a4\ud2b8\ub9bc\uc744 \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658 \ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\uc751\uc6a9\ud558\uba74 &#8220;\ucf54\ub8e8\ud2f4 \ub3c4\uc911 \ud2b9\uc815 \uc774\ubca4\ud2b8\uc758 \ubc1c\ud589\uc744 \uae30\ub2e4\ub9b0\ub2e4&#8221; \uac19\uc740 \ucc98\ub9ac\uac00 \uac00\ub2a5\ud558\uac8c \ub41c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\uc751\uc6a9-\uc608\">\uc751\uc6a9 \uc608<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%EC%9D%91%EC%9A%A9-%EC%98%88\">\u200b<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ucf54\ub8e8\ud2f4\uc744-\uc9c1\ub82c\ub85c-\uc2e4\ud589\ud558\uace0-\uae30\ub2e4\ub9b0\ub2e4\">\ucf54\ub8e8\ud2f4\uc744 \uc9c1\ub82c\ub85c \uc2e4\ud589\ud558\uace0 \uae30\ub2e4\ub9b0\ub2e4<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%84-%EC%A7%81%EB%A0%AC%EB%A1%9C-%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0-%EA%B8%B0%EB%8B%A4%EB%A6%B0%EB%8B%A4\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CoroutineA \uc2e4\ud589 \u2192 CoroutineA\uc758 \uc885\ub8cc\ub97c \ubc1b\uace0 CoroutineB \uc2dc\uc791<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void Start() =>\n    Observable.FromCoroutine(CoroutineA)\n        .SelectMany(CoroutineB)\/\/ SelectMany\uc5d0\uc11c \ud569\uc131\n        .Subscribe(_ => Debug.Log(\"All Coroutine Finished\"));\n\nprivate IEnumerator CoroutineA()\n{\n    Debug.Log(\"CoroutineA start\");\n    yield return new WaitForSeconds(3);\n    Debug.Log(\"CoroutineA finished\");\n}\n\nprivate IEnumerator CoroutineB()\n{\n    Debug.Log(\"CoroutineB start\");\n    yield return new WaitForSeconds(3);\n    Debug.Log(\"CoroutineB finished\");\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacb0\uacfc<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CoroutineA start\nCoroutineA finished\nCoroutineB start\nCoroutineB finished\nAll coroutine finished<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\uc5ec\ub7ec-\ucf54\ub8e8\ud2f4\uc744-\ub3d9\uc2dc\uc5d0-\uc2dc\uc791\ud558\uace0-\uacb0\uacfc\ub97c-\uae30\ub2e4\ub9b0\ub2e4\">\uc5ec\ub7ec \ucf54\ub8e8\ud2f4\uc744 \ub3d9\uc2dc\uc5d0 \uc2dc\uc791\ud558\uace0 \uacb0\uacfc\ub97c \uae30\ub2e4\ub9b0\ub2e4<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%EC%97%AC%EB%9F%AC-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%84-%EB%8F%99%EC%8B%9C%EC%97%90-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B3%A0-%EA%B2%B0%EA%B3%BC%EB%A5%BC-%EA%B8%B0%EB%8B%A4%EB%A6%B0%EB%8B%A4\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CoroutineA\uc640 CoroutineB\ub97c \ub3d9\uc2dc\uc5d0 \uc2dc\uc791\ud558\uace0 \ubaa8\ub450 \uc885\ub8cc\ud558\uace0 \uc815\ub9ac\ud574 \ucc98\ub9ac<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void Start() =>\n        Observable.WhenAll(\n            Observable.FromCoroutine&lt;string>(o => CoroutineA(o))\n            , Observable.FromCoroutine&lt;string>(o => CoroutineB(o))\n        ).Subscribe(xs =>\n        {\n            foreach (var x in xs)\n            {\n                Debug.Log(\"result: \" + x);\n            }\n        });\n\n    private IEnumerator CoroutineA(IObserver&lt;string> observer)\n    {\n        Debug.Log(\"CoroutineA start\");\n        yield return new WaitForSeconds(3);\n        observer.OnNext(\"CoroutineA done!\");\n        observer.OnCompleted();\n    }\n\n    private IEnumerator CoroutineB(IObserver&lt;string> observer)\n    {\n        Debug.Log(\"CoroutineB start\");\n        yield return new WaitForSeconds(1);\n        observer.OnNext(\"CoroutineB done!\");\n        observer.OnCompleted();\n    }<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacb0\uacfc<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CoroutineB start\nCoroutineA start\nresult : CoroutineA done!\nresult : CoroutineB done!<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ubb34\uac70\uc6b4-\ucc98\ub9ac\ub97c-\ub2e4\ub978-\uc2a4\ub808\ub4dc\uc5d0-\ud558\uba74\uc11c-\uacb0\uacfc\ub97c-\ucf54\ub8e8\ud2f4\uc5d0\uc11c-\uc5bb\ub294\ub2e4\">\ubb34\uac70\uc6b4 \ucc98\ub9ac\ub97c \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc5d0 \ud558\uba74\uc11c \uacb0\uacfc\ub97c \ucf54\ub8e8\ud2f4\uc5d0\uc11c \uc5bb\ub294\ub2e4.<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/26\/Getting-Started-5#%EB%AC%B4%EA%B1%B0%EC%9A%B4-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EB%8B%A4%EB%A5%B8-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%97%90-%ED%95%98%EB%A9%B4%EC%84%9C-%EA%B2%B0%EA%B3%BC%EB%A5%BC-%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%97%90%EC%84%9C-%EC%96%BB%EB%8A%94%EB%8B%A4\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ucf54\ub8e8\ud2f4\uc5d0\uc11c \uc77c\ubd80 \ucc98\ub9ac\ub97c \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\ud558\uace0 \uacb0\uacfc\uac00 \ub3cc\uc544 \uc624\uba74 \ucc98\ub9ac\ub97c \ucf54\ub8e8\ud2f4\uc5d0\uc11c \uc7ac\uac1c\ud558\ub3c4\ub85d \uad6c\ud604.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Observable.Start()<\/code>&nbsp;\uc744 \uc774\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void Start() => StartCoroutine(GetEnemyDataFromServerCoroutine());\n\n\/\/\/ &lt;summary>\n\/\/\/ \uc11c\ubc84\uc5d0\uc11c \uc801\uc758 \uc815\ubcf4\ub97c \ub2f9\uaca8\uc624\ub294 \ucf54\ub8e8\ud2f4\n\/\/\/ &lt;\/summary>\n\/\/\/ &lt;returns>&lt;\/returns>\nprivate IEnumerator GetEnemyDataFromServerCoroutine()\n{\n\/\/ \uc11c\ubc84\uc5d0\uc11c xml \ub2e4\uc6b4\ub85c\ub4dc\n    var www = new WWW (\"http:\/\/api.hogehoge.com\/resouces\/enemey.xml\");\n\n    yield return www;\n\n    if (!string.IsNullOrEmpty(www.error))\n    {\n        Debug.Log(www.error);\n    }\n\n    var xmlText = www.text;\n\n\/\/ ParseXml \ud568\uc218\ub97c \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uc2e4\ud589\n\/\/ Observable.Start\ub294 \uc778\uc218\uc758 \ud568\uc218\ub97c ThreadPool\uc5d0\uc11c \uc2e4\ud589\ud558\ub294 \uae30\ub2a5\n    var o = Observable.Start(() => ParseXml(xmlText)).ToYieldInstruction();\n\n\/\/ \ud30c\uc2a4 \uc885\ub8cc \ub300\uae30\n    yield return o;\n\n    if (o.HasError)\n    {\n\/\/ \ud30c\uc2a4 \uc2e4\ud328\n        Debug.LogError(o.Error);\n        yield break;\n    }\n\n\/\/ \ud30c\uc2a4 \uacb0\uacfc\n    var result = o.Result;\n    Debug.Log(result);\n\n\/\/ \uc774 \ud6c4 \ucc98\ub9ac \uacc4\uc18d\n}\n\nprivate Dictionary&lt;string, EnemyParameter> ParseXml(string xml)\n{\n\/\/ \uc5ec\uae30\uc5d0 xml \ud30c\uc2f1\uc744 Dictinonary\uc5d0 \ub123\ub294\ub2e4\ub294 \uac00\uc815\n    return new Dictionary&lt;string, EnemyParameter>();\n}\n\n\/\/\/ &lt;summary>\n\/\/\/ \uc801 \ub9e4\uac1c \ubcc0\uc218\n\/\/\/ &lt;\/summary>\nprivate struct EnemyParameter\n{\n    public string Name { get; set; }\n    public string Health { get; set; }\n    public string Power { get; set; }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(\u2191 \uad6c\ud604 \ubcf4\ub2e4 \u2193 \uc791\uc131 \ud55c \uac83\uc774 \uac04\ub2e8\ud558\uac8c \uc791\uc131\ub418\uc9c0\ub9cc, \uc5b4\ub514 \uae4c\uc9c0\ub098 \ucf54\ub8e8\ud2f4\uc744 \uc0ac\uc6a9\ud558\uba74 \uc5b4\ub5bb\uac8c \ub420\uae4c \uc124\uba85 \uc774\ubbc0\ub85c \uc6a9\uc11c \ubc14\ub78d\ub2c8\ub2e4.)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ObservableWWW.Get(\"http:\/\/api.hogehoge.com\/resouces\/enemey.xml\")\n    .SelectMany(x => Observable.Start(() => ParseXml(x)))\n    .ObserveOnMainThread()\/\/ \ucc98\ub9ac\ub97c \uba54\uc778 \uc2a4\ub808\ub4dc \ucde8\uc18c\n    .Subscribe(result =>\n    {\n\/\/ \uc5ec\uae30\uc5d0 \ud37c\uc2a4 \uacb0\uacfc\ub97c \uc0ac\uc6a9\ud55c \ucc98\ub9ac\n    }\n    ex => Debug.LogError(ex)\n);\n<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\uc815\ub9ac<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc2a4\ud2b8\ub9bc\uacfc \ucf54\ub8e8\ud2f4\uc740 \uc0c1\ud638 \ubcc0\ud658 \ud560 \uc218 \uc788\ub2e4.<\/strong><\/li>\n\n\n\n<li>\ucf54\ub8e8\ud2f4\uc744 \uc774\uc6a9\ud558\uc5ec \uc624\ud37c\ub808\uc774\ud130 \uccb4\uc778\uc73c\ub85c\ub294 \ub9cc\ub4e4 \uc218 \uc5c6\ub294 \uc2a4\ud2b8\ub9bc\uc744 \uad6c\ucd95\ud558\ub294 \uac83\uc774 \uac00\ub2a5\ud558\uac8c \ub41c\ub2e4.<\/li>\n\n\n\n<li>UniRx\uc758 \ub3c5\uc790 \ucf54\ub8e8\ud2f4\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc73c\ub85c, Unity \ud45c\uc900 \ucf54\ub8e8\ud2f4\ubcf4\ub2e4 \uc0ac\uc6a9\uc774\ub098 \uc131\ub2a5\uc774 \ud5a5\uc0c1 \ub420 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\uc2a4\ud2b8\ub9bc\uc744 \ucf54\ub8e8\ud2f4\uc73c\ub85c \ubcc0\ud658\ud558\uc5ec async\/await \uac19\uc740 \uae30\ub2a5\uc774 \uac00\ub2a5\ud558\ub2e4 (\uc5b4\ub514 \uae4c\uc9c0\ub098 \ube44\uc2b7\ud55c \uae30\ub2a5)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>UniRx \uc785\ubb38 \uc2dc\ub9ac\uc988 \ubaa9\ucc28\ub294 \uc774\ucabd 0. \uc774\uc804 \ubcf5\uc2b5 \uc9c0\ub09c\ubc88\uc5d0\ub294 Update()\ub97c \uc5b4\ub5bb\uac8c Observable\ub85c \ubcc0\ud658\ud558\uc5ec \uc774\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0 \uc124\uba85 \ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \ud55c \uac78\uc74c \ub354 \ub098\uc544\uac00 \ucf54\ub8e8\ud2f4\uacfc \ud568\uaed8 UniRx\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c\ud558\uaca0\uc2b5\ub2c8\ub2e4. 1. \ucf54\ub8e8\ud2f4\uacfc UniRx Unity\ub294 \uae30\ubcf8\uc801\uc73c\ub85c &#8220;\ucf54\ub8e8\ud2f4&#8221;\uc774\ub77c\ub294 \uae30\ub2a5\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uac83\uc740 \ubcf8\ub798\ub294 \uc774\ud130\ub808\uc774\ud130 \ucc98\ub9ac\ub97c \uad6c\ud604\ud558\ub294\ub370 \uc0ac\uc6a9\ud558\ub294&nbsp;IEnumerator\uc640&nbsp;yield \ud0a4\uc6cc\ub4dc\ub97c \ud65c\uc6a9\ud558\uc5ec Unity\uc758&nbsp;\uc8fc \uc2a4\ub808\ub4dc\uc5d0\uc11c&nbsp;\ube44\ub3d9\uae30 \ucc98\ub9ac \uac19\uc740 \uac83\uc744 \uc2e4\ud604\ud558\ub294 \uae30\ub2a5 \uc785\ub2c8\ub2e4. (\uac04\ud639 &hellip;<br \/><a href=\"http:\/\/yoonhada.com\/?p=1458\" class=\"more-link pen_button pen_element_default pen_icon_arrow_double\"><span class=\"screen-reader-text\">UniRx \uc785\ubb38 5 \ubd80 &#8211; \ucf54\ub8e8\ud2f4\uacfc \ud568\uaed8<\/span> \ub354\ubcf4\uae30<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84,80],"tags":[59,42],"class_list":["post-1458","post","type-post","status-publish","format-standard","hentry","category-architecture","category-project","tag-unirx","tag-unity"],"_links":{"self":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1458"}],"version-history":[{"count":14,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1458\/revisions"}],"predecessor-version":[{"id":1831,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1458\/revisions\/1831"}],"wp:attachment":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1458"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}