{"id":1454,"date":"2022-07-06T07:45:08","date_gmt":"2022-07-05T22:45:08","guid":{"rendered":"http:\/\/yoonhada.com\/?p=1454"},"modified":"2023-12-26T21:26:32","modified_gmt":"2023-12-26T12:26:32","slug":"unirx-%ec%9e%85%eb%ac%b8-%ea%b7%b8-4-update%eb%a5%bc-%ec%8a%a4%ed%8a%b8%eb%a6%bc%ec%9c%bc%eb%a1%9c-%eb%b3%80%ed%99%98%ed%95%98%eb%8a%94-%eb%b0%a9%eb%b2%95-%eb%b0%8f-%ec%9e%a5%ec%a0%90","status":"publish","type":"post","link":"http:\/\/yoonhada.com\/?p=1454","title":{"rendered":"UniRx \uc785\ubb38 4 &#8211; Update\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95 \ubc0f \uc7a5\uc810"},"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<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">0. \uc774\uc804 \ubcf5\uc2b5<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc804\uc5d0\ub294 \uc2a4\ud2b8\ub9bc\uc758 \uad6c\ucd95 \ubc29\ubc95\uc744 \uba87 \uac00\uc9c0 \uc18c\uac1c \ud588\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \ub354 \uc2e4\uc6a9\uc131\uc774 \ub192\uc740 &#8220;Update\ub97c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95&#8221;\uc5d0 \uc911\uc810\uc744 \ub450\uace0 \uc124\uba85 \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud3ec\uc2a4\ud2b8\uc5d0 \uc801\uc740 \ub0b4\uc6a9\uc740 \uacfc\uac70\uc5d0 \uc801\uc740 [[UniRx]&nbsp;Update()\ub97c Observable\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95]({% post_url 2019-10-10-UniRx-How-to-convert-Update-to-Observable %})\uc758 \ub0b4\uc6a9\uc744 \uace0\uccd0 \uc4f4 \ub0b4\uc6a9 \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">1. Update()\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Unity\uc758 Update() \ud638\ucd9c\uc744 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc740 \ub450 \uac00\uc9c0\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UniRx.Triggers\uc758 UpdateAsObservable\uc744 \uc774\uc6a9\ud558\ub294 \ubc29\ubc95<\/li>\n\n\n\n<li>Observable.EveryUpdate\ub97c \uc774\uc6a9\ud558\ub294 \ubc29\ubc95<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704 \ub450 \ubc29\ubc95\uc740 \ub3d9\uc791 \uc790\uccb4\ub294 \ube44\uc2b7\ud558\uc9c0\ub9cc \ub0b4\ubd80 \uad6c\ud604\uc774 \ud06c\uac8c \ub2e4\ub985\ub2c8\ub2e4. \uc6b0\uc120 \uac01\uac01\uc758 \uc0ac\uc6a9\ubc95\uacfc \uad6c\uc870\ub97c \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"unirxtriggers\uc758-updateasobservable\ub97c-\uc774\uc6a9\ud558\ub294-\ubc29\ubc95\">UniRx.Triggers\uc758 UpdateAsObservable\ub97c \uc774\uc6a9\ud558\ub294 \ubc29\ubc95<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#unirxtriggers%EC%9D%98-updateasobservable%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95\">\u200b<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\uc0ac\uc6a9\ubc95\">\uc0ac\uc6a9\ubc95<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EC%82%AC%EC%9A%A9%EB%B2%95\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud638\ucd9c \ubc29\ubc95<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>using UniRx.Triggers;<\/code>&nbsp;\ucd94\uac00<\/li>\n\n\n\n<li><code>this.UpdateAsObservable()<\/code>&nbsp;\uc120\uc5b8<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc1c\ud589\ub418\ub294 \ud615\ud0dc<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unit<\/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=\"\">public class UpdateSample : MonoBehaviour\n{\n    private void Start() =>\n        \/\/ UpdateAsObservable\ub294 Component\uc5d0 \ub300\ud55c\n        \/\/ \ud655\uc7a5 \uba54\uc11c\ub4dc\ub85c \uc815\uc758\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud638\ucd9c\uc2dc\n        \/\/ \"this\"\uac00 \ud544\uc694\n        this.UpdateAsObservable()\n            .Subscribe(_ => Debug.Log(\"Update!\"));\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\ucc98\ub7fc Update \uc774\ubca4\ud2b8\ub97c UniRx \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\uc5ec \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c&nbsp;<code>UpdateAsObservable<\/code>\uc774 GameObject\uac00 \ud30c\uad34\ub418\uc5c8\uc744\ub54c \uc790\ub3d9\uc73c\ub85c OnCompleted\uac00 \ubc1c\ud589\ub418\uae30 \ub54c\ubb38\uc5d0 \uc2a4\ud2b8\ub9bc\uc758 \uc218\uba85 \uad00\ub9ac\ub3c4 \uc27d\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"283\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-15-ee28117fa5f1d637f6cc509789607a79.png\" alt=\"\" class=\"wp-image-1760\" srcset=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-15-ee28117fa5f1d637f6cc509789607a79.png 403w, http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-15-ee28117fa5f1d637f6cc509789607a79-300x211.png 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(Destroy\uc2dc OnCompleted\uac00 \ubc1c\ud589\ub41c\ub2e4)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\uad6c\uc870\">\uad6c\uc870<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EA%B5%AC%EC%A1%B0\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>UpdateAsObservable<\/code>\uc740&nbsp;<code>ObservableUpdateTrigger \ucef4\ud3ec\ub10c\ud2b8<\/code>\uc5d0 \uc2e4\uccb4\ub97c \uac16\ub294 \uc2a4\ud2b8\ub9bc \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>UpdateAsObservable<\/code>\uc744 \ud638\ucd9c \ud558\ub294 \ud0c0\uc774\ubc0d\uc5d0 \ud574\ub2f9 GameObject\uc5d0&nbsp;<code>ObservableUpdateTrigger \ucef4\ud3ec\ub10c\ud2b8<\/code>\ub97c UniRx\uac00 \uc790\ub3d9\uc73c\ub85c \uc5f0\uacb0\ud558\uace0 \uc774 ObservableUpdateTrigger\uac00 \ubc1c\ud589\ud558\ub294 \uc774\ubca4\ud2b8\ub97c \uc0ac\uc6a9\ud558\ub294 \uad6c\uc870\ub85c \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UpdateAsObservable\ub294 ObservableUpdateTrigger\ub97c \ucd08\uae30\ud654\ud558\ub294 \ud655\uc7a5 \uba54\uc11c\ub4dc<\/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=\"\">public static IObservable&lt;Unit> UpdateAsObservable(this Component component)\n{\n    if (component == null || component.gameObject == null) return Observable.Empty&lt;Unit>();\n    return GetOrAddComponent&lt;ObservableUpdateTrigger>(component.gameObject).UpdateAsObservable();\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">UpdateAsObservable\uc758 \ubcf8\uccb4<\/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;\/\/ require keep for Windows Universal App\nusing UnityEngine;\n\nnamespace UniRx.Triggers\n{\n    [DisallowMultipleComponent]\n    public class ObservableUpdateTrigger : ObservableTriggerBase\n    {\n        Subject&lt;Unit> update;\n\n\/\/\/ &lt;summary>Update is called every frame, if the MonoBehaviour is enabled.&lt;\/summary>\n        void Update()\n        {\n            if (update != null) update.OnNext(Unit.Default);\n        }\n\n\/\/\/ &lt;summary>Update is called every frame, if the MonoBehaviour is enabled.&lt;\/summary>\n        public IObservable&lt;Unit> UpdateAsObservable()\n        {\n            return update ?? (update = new Subject&lt;Unit>());\n        }\n\n        protected override void RaiseOnCompletedOnDestroy()\n        {\n            if (update != null)\n            {\n                update.OnCompleted();\n            }\n        }\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(\ucf54\ub4dc\ub294&nbsp;<a href=\"https:\/\/github.com\/neuecc\/UniRx\/blob\/7.1.0\/Assets\/Plugins\/UniRx\/Scripts\/UnityEngineBridge\/Triggers\/ObservableUpdateTrigger.cs\" target=\"_blank\" rel=\"noreferrer noopener\">\uc5ec\uae30<\/a>\uc5d0\uc11c \uc778\uc6a9)<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"324\" height=\"325\" data-id=\"1757\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-16-11aeececfe23fd8b67a0270b5e9a97fa.png\" alt=\"\" class=\"wp-image-1757\" srcset=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-16-11aeececfe23fd8b67a0270b5e9a97fa.png 324w, http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-16-11aeececfe23fd8b67a0270b5e9a97fa-300x300.png 300w, http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-16-11aeececfe23fd8b67a0270b5e9a97fa-150x150.png 150w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ucc98\ub7fc UpdateAsObservable\ub97c \ud638\ucd9c\ud558\ub294 \uac83\uc73c\ub85c&nbsp;<code>ObservableUpdateTrigger \ucef4\ud3ec\ub10c\ud2b8<\/code>\ub97c GameObject\uc5d0 \ubd99\uc5ec&nbsp;<code>ObservableUpdateTrigger<\/code>\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 Update()\ub97c \ub0b4\ubd80\uc5d0 \uac00\uc9c0\ub294 Subject\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub2e8\uc9c0 \uc774\ubca4\ud2b8\ub97c \ubc1c\ud589\ud558\uace0 \uc788\ub294 \uac04\ub2e8\ud55c \uad6c\uc870\ub85c \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc8fc\uc758\ud574\uc57c \ud560 \uc810\uc740 \ub2e4\uc74c \ub450\uac00\uc9c0 \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ObservableUpdateTrigger\ub77c\ub294 \uc218\uc218\uaed8\ub07c\uc758 \ucef4\ud3ec\ub10c\ud2b8\uac00 \uac11\uc790\uae30 \uc99d\uac00\ud558\ub354\ub77c\ub3c4 \uadf8\uac83\uc774 \uc815\uc0c1 \ub3d9\uc791\uc774\ubbc0\ub85c \uc0ad\uc81c\ud558\uc9c0 \ub9d0\uc790<\/li>\n\n\n\n<li>1\uac1c\uc758 GameObject\ub9c8\ub2e4 1\uac1c\uc758 ObservableUpdateTrigger\ub97c \uacf5\uc720\ud558\uace0 \uc774\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 UpdateAsObservable \uc790\uccb4\ub97c \ubb34\uc218\ud788 Subscribe \ud574\ub3c4 \uadf8\ub2e4\uc9c0 \ube44\uc6a9\uc774 \uc99d\uac00 \ub420\uac83\uc740 \uc5c6\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788&nbsp;<strong>\ucef4\ud3ec\ub10c\ud2b8\uac00 \uac11\uc790\uae30 \uc99d\uac00\ud558\ub354\ub77c\ub3c4 \uadf8\uac83\uc774 \uc815\uc0c1 \ub3d9\uc791\uc774\ubbc0\ub85c \uc0ad\uc81c\ud558\uc9c0 \ub9d0\uc790<\/strong>&nbsp;\ub77c\ub294 \uc810\ub9cc \uae30\uc5b5\ud574\ub450\uba74 \uc88b\uc744 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"observableeveryupdate\ub97c-\uc774\uc6a9\ud558\ub294-\ubc29\ubc95\">Observable.EveryUpdate\ub97c \uc774\uc6a9\ud558\ub294 \ubc29\ubc95<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#observableeveryupdate%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95\">\u200b<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\uc0ac\uc6a9\ubc95-1\">\uc0ac\uc6a9\ubc95<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EC%82%AC%EC%9A%A9%EB%B2%95-1\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud638\ucd9c \ubc29\ubc95<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>Observable.EveryUpdate()<\/code>&nbsp;\uc9c1\uc811 Subscribe\ud558\uae30<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ubc1c\ud589\ub418\ub294 \ud615\ud0dc<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">long(Subscribe \ud6c4 \uacbd\uacfc\ud55c \ud504\ub808\uc784)<\/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 UniRx;\nusing UnityEngine;\n\npublic class UpdateSample : MonoBehaviour\n{\n    private void Start() =>\n        Observable.EveryUpdate()\n            .Subscribe(_ => Debug.Log(\"Update!\"));\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc73c\ub85c \uc0ac\uc6a9\ubc95\uc740 \uc774\uc804\uc758&nbsp;<code>UpdateAsObservable<\/code>\uc640 \uac19\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ud55c \uac00\uc9c0 \ud070 \ucc28\uc774\ub294,&nbsp;<strong>Observable.EveryUpdate()\ub294 \uc2a4\uc2a4\ub85c OnCompleted\ub97c \ubc1c\ud589\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/strong>&nbsp;\uc989&nbsp;<code>Observable.EveryUpdate()<\/code>\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \ubc18\ub4dc\uc2dc \uc9c1\uc811 \uc2a4\ud2b8\ub9bc\uc758 \uc218\uba85 \uad00\ub9ac\ub97c \ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\uad6c\uc870-1\">\uad6c\uc870<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EA%B5%AC%EC%A1%B0-1\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Observable.EveryUpdate()\ub294 UniRx\uc758 \uae30\ub2a5 \uc911 \ud558\ub098 \uc778 &#8220;\ub9c8\uc774\ud06c\ub85c\ucf54\ub8e8\ud2f4&#8221;\uc744 \uc774\uc6a9\ud558\uc5ec \ub3d9\uc791\ud558\uba70, \uad6c\uc870\ub294 UpdateAsObservable\uc5d0 \ub2e4\uc18c \ubcf5\uc7a1 \ud569\ub2c8\ub2e4. \uad49\uc7a5\ud788 \uad00\uacb0\ud558\uac8c \uc815\ub9ac \ud558\uba74&nbsp;<strong>&#8220;Observable.EveryUpdate()\ub294 \ud638\ucd9c \ub420 \ub54c\ub9c8\ub2e4 \uc2f1\uae00\ud1a4 \uc0c1\uc5d0\uc11c \ucf54\ub8e8\ud2f4\uc744 \uc2dc\uc791 \ud55c\ub2e4&#8221;<\/strong>\ub77c\ub294 \ub3d9\uc791\uc73c\ub85c \ubcf4\uba74 \ub429\ub2c8\ub2e4. \uc774 \ucf54\ub8e8\ud2f4\uc740 \uc218\ub3d9\uc73c\ub85c \uba48\ucd94\uc9c0 \uc54a\ub294 \ud55c \uacc4\uc18d \uc2e4\ud589\ub418\uae30 \ub54c\ubb38\uc5d0 \uc2a4\ud2b8\ub9bc\uc758 \uc218\uba85 \uad00\ub9ac\ub97c \uc81c\ub300\ub85c \ud558\uc9c0 \uc54a\uc73c\uba74&nbsp;[\uc785\ubb38 2]({% post_url 2019-11-06-UniRx-Getting-Started-2 %})\uc5d0\uc11c \uc5b8\uae09\ud55c \ubb38\uc81c\ub97c \uc77c\uc73c\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7ec\ub098 \ubc18\uba74&nbsp;<code>Observable.EveryUpdate()<\/code>\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc7a5\uc810\ub3c4 \uc874\uc7ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc2f1\uae00\ud1a4\uc5d0\uc11c \uc791\ub3d9\ud558\uae30 \ub54c\ubb38\uc5d0 \uac8c\uc784 \uc9c4\ud589 \ub0b4\ub0b4 \uc874\uc7ac\ud558\ub294 \uc2a4\ud2b8\ub9bc\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4.<\/strong><\/li>\n\n\n\n<li><strong>\ub300\ub7c9\uc758 Subscribe\ud574\ub3c4 \uc131\ub2a5\uc774 \uc800\ud558\ub418\uc9c0 \uc54a\ub294\ub2e4. (<a href=\"http:\/\/neue.cc\/2016\/05\/14_529.html\" target=\"_blank\" rel=\"noreferrer noopener\">\ub9c8\uc774\ud06c\ub85c \ucf54\ub8e8\ud2f4<\/a>\uc758 \uc131\uc9c8)<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c UniRx\uac00 \uad00\ub9ac\ud558\ub294 \uc2f1\uae00\ud1a4\uc740 &#8220;MainThreadDispatcher&#8221;\ub77c\ub294 GameObject\uc785\ub2c8\ub2e4. UniRx\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\uc73c\uba74 \uc5b4\ub290\uc0c8 \uc0dd\uc131\ub420 \uc218 \uc788\uc744 \uac70\ub77c\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4. \uc774\ucabd\ub3c4 UniRx\uc758 \ub3d9\uc791\uc5d0 \uc808\ub300\uc801\uc73c\ub85c \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc5d0 \ub9c8\uc74c\ub300\ub85c \uc0ad\uc81c\ud558\uac70\ub098 \ud558\uc9c0 \uc54a\ub3c4\ub85d \uc8fc\uc758 \ud569\uc2dc\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"461\" height=\"262\" src=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-17-4421a70da48ef6b66247081bf2dc9d98.png\" alt=\"\" class=\"wp-image-1766\" srcset=\"http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-17-4421a70da48ef6b66247081bf2dc9d98.png 461w, http:\/\/yoonhada.com\/wp-content\/uploads\/2023\/02\/2020-02-23-17-4421a70da48ef6b66247081bf2dc9d98-300x170.png 300w\" sizes=\"auto, (max-width: 461px) 100vw, 461px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">(MainThreadDispatcher\ub294 UniRx\uac00 \uad00\ub9ac, \uc774\uc6a9\ud558\uace0 \uc788\ub294 \uc2f1\uae00\ud1a4 \uac1d\uccb4\uc774\ub2e4. \ub9c8\uc74c\ub300\ub85c \uc0ad\uc81c\ud558\uc9c0 \ub9d0\uc790)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"updateasobservable\uc640-observableeveryupdate\uc758-\uad6c\ubd84\">UpdateAsObservable()\uc640 Observable.EveryUpdate()\uc758 \uad6c\ubd84<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#updateasobservable%EC%99%80-observableeveryupdate%EC%9D%98-%EA%B5%AC%EB%B6%84\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ub450\uac1c\ub294 \ub3d9\uc791\uc740 \ube44\uc2b7\ud558\uc9c0\ub9cc \ub0b4\ubd80 \uad6c\ud604\uc740 \ud06c\uac8c \ucc28\uc774\uac00 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \uac01\uac01\uc758 \uc791\ub3d9 \uc6d0\ub9ac\ub97c \ud655\uc2e4\ud788 \ud30c\uc545\ud558\uace0 \uac01 \uc0c1\ud669\uc5d0 \ub530\ub77c \uc801\uc808\ud55c \ucabd\uc744 \uc774\uc6a9\ud558\uba74 \uc88b\uc744 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>UpdateAsObservable():<\/strong>&nbsp;GameObject\uac00 \ud30c\uae30\ub418\uba74 \uc790\ub3d9\uc73c\ub85c \uba48\ucd98\ub2e4<\/li>\n\n\n\n<li><strong>Observable.EveryUpdate():<\/strong>&nbsp;\uc131\ub2a5\uc0c1\uc73c\ub85c \uc774\uc810\uc774 \uc788\uc9c0\ub9cc Dispose\ub97c \uc218\ub3d9\uc73c\ub85c \ud638\ucd9c\ud560 \ud544\uc694\uac00 \uc788\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>UpdateAsObservable\ub97c \uc0ac\uc6a9\ud558\uba74 \uc88b\uc744 \uac83 \uac19\uc740 \uc7a5\uc18c<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GameObject\uc5d0 \uc5f0\uad00\ub41c \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud55c\ub2e4.<\/strong>\n<ul class=\"wp-block-list\">\n<li>OnDestroy\uc2dc OnCompleted\uac00 \ubc1c\ud589\ub418\ubbc0\ub85c \uc218\uba85 \uad00\ub9ac\uac00 \ud3b8\ud558\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Observable.EveryUpdate()\ub97c \uc0ac\uc6a9\ud558\uba74 \uc88b\uc744 \uac83 \uac19\uc740 \uc7a5\uc18c<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GameObject\ub97c \uc774\uc6a9\ud558\uc9c0 \uc54a\ub294 Pure\ud55c Class\uc5d0\uc11c Update \uc774\ubca4\ud2b8\ub97c \uc774\uc6a9\ud558\uace0 \uc2f6\uc744 \ub54c<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uc2f1\uae00\ud1a4\uc744 \ud1b5\ud574 Update \uc774\ubca4\ud2b8\ub97c \uac00\uc838\uc62c \uc218 \uc788\uc73c\ubbc0\ub85c MonoBehaviour\ub97c \uc0c1\uc18d\ud558\uc9c0 \uc54a\uc544\ub3c4 Update \uc774\ubca4\ud2b8\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uac8c\uc784 \uc911\uc5d0 \ud56d\uc0c1 \uc874\uc7ac\ud558\uace0 \uc791\ub3d9\ud558\ub294 \uc2a4\ud2b8\ub9bc\uc744 \uc900\ube44\ud558\uace0 \uc2f6\uc744 \ub54c<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uc2f1\uae00\ud1a4\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0 OnCompleted\uac00 \uc790\ub3d9\uc73c\ub85c \ubc1c\ub3d9\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/li>\n\n\n\n<li>\ucc38\uace0:&nbsp;[UniRx\uc5d0\uc11c FPS \uce74\uc6b4\ud130 \ub9cc\ub4e4\uae30]({% post_url 2019-10-23-UniRx-FPS-Counter %})<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\ub300\ub7c9\uc758 Update() \ud638\ucd9c\uc774 \ud544\uc694\ud560 \ub54c<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uc18c\ub7c9\uc758 Update() \ud638\ucd9c\ubcf4\ub2e4 \uc555\ub3c4\uc801\uc73c\ub85c \uc131\ub2a5\uc774 \ub098\uc628\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">\uc194\uc9c1\ud788 \uc5b4\ub290 \ucabd\uc744 \uc0ac\uc6a9\ud574\uc57c \ud560 \uac83\uc778\uac00\ub294 \uc120\ud0dd\uc758 \ubb38\uc81c\uc774\uae30\ub3c4 \ud558\ub2e4 \uc0dd\uac01\ud569\ub2c8\ub2e4. Observable.EveryUpdate() \ucabd\uc774 \uc131\ub2a5\uc740 \uc88b\uc9c0\ub9cc, Dispose\ub97c \ud574\uc57c \ub418\ub294 \ub2e8\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc5d0\ub77c\uac00 \ub098\uc11c \uc2a4\ud2b8\ub9bc\uc774 \uba48\ucd98\ub2e4\uba74 \uc88b\uc9c0\ub9cc, \uac00\uc7a5 \ubb34\uc11c\uc6b4 \uac83\uc740 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud574\ub3c4 \ub4a4\uc5d0\uc11c \uacc4\uc18d \uc6c0\uc9c1\uc5ec\ubc84\ub9ac\ub294 \uacbd\uc6b0\uc785\ub2c8\ub2e4. \ub208\uce58 \ucc44\ubcf4\ub2c8 \uc4f0\ub808\uae30 \uc2a4\ud2b8\ub9bc\uc774 \ub4a4\uc5d0\uc11c \ub300\ub7c9\uc73c\ub85c \uc791\ub3d9 \ud558\ub294 \uacbd\uc6b0\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc544\ubb34\ub9ac \uc131\ub2a5\uc5d0 \ucc28\uc774\uac00 \uc788\ub2e4\uace0 \ud574\ub3c4 \uadf8 \uc131\ub2a5 \ucc28\uc774\uac00 \uac8c\uc784\uc758 \ub3d9\uc791\uc5d0 \uc601\ud5a5\uc744 \uc8fc\ub294 \uc0c1\ud669\uc774\ub780 \uac70\uc758 \uc5c6\uc2b5\ub2c8\ub2e4. (\uc5c4\uccad\ub09c \uc591\uc758 GameObject\ub97c \ub3d9\uc2dc\uc5d0 \uc0dd\uc131\ud558\uace0 \uc6c0\uc9c1\uc600\uc744 \ub54c \ub77c\ub4e0\uc9c0?) \ub54c\ubb38\uc5d0, \uac1c\uc778\uc801\uc73c\ub85c&nbsp;<strong>\ub354 \uc548\uc804\ud55c UpdateAsObservable()\uc744 \uc0ac\uc6a9\ud558\uae30\ub97c \uad8c\uc7a5\ud569\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">2. Update\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \uc774\uc720<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">UniRx\ub97c \uc774\uc6a9\ud574\uc57c \ud558\ub294 \uc774\uc720\uc911 1\uac1c\ub294 &#8220;Update\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658 \ud560 \uc218 \uc788\ub2e4&#8221;\ub294 \uc810\uc774\ub77c\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4. \uc2a4\ud2b8\ub9bc \ud654\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uc774\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>UniRx \uc624\ud37c\ub808\uc774\ud130\ub97c \uc774\uc6a9\ud558\uc5ec \ub85c\uc9c1\uc744 \uc791\uc131 \ud560 \uc218 \uc788\uac8c \ub41c\ub2e4.<\/strong><\/li>\n\n\n\n<li><strong>\ub85c\uc9c1\uc758 \ucc98\ub9ac \ub2e8\uc704\uac00 \uba85\ud655\ud574\uc9c4\ub2e4.<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\uc624\ud37c\ub808\uc774\ud130\ub97c-\uc774\uc6a9\ud55c-\ub85c\uc9c1\uc758-\uc791\uc131\">\uc624\ud37c\ub808\uc774\ud130\ub97c \uc774\uc6a9\ud55c \ub85c\uc9c1\uc758 \uc791\uc131<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EC%98%A4%ED%8D%BC%EB%A0%88%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%A1%9C%EC%A7%81%EC%9D%98-%EC%9E%91%EC%84%B1\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">UniRx\ub294 \uc2dc\uac04\uc5d0 \uad00\ub828\ub41c \uc624\ud37c\ub808\uc774\ud130\uac00 \ub2e4\uc218 \uc900\ube44\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 UniRx \uc2a4\ud2b8\ub9bc\uc5d0\uc11c \ub17c\ub9ac\ub97c \uc791\uc131\ud558\uace0 \ub098\uba74 \uc2dc\uac04\uc758 \uad00\uacc4 \ub17c\ub9ac\ub97c \uac04\uacb0\ud558\uac8c \uae30\uc220 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4,&nbsp;<strong>\ubc84\ud2bc\uc744 \ub204\ub974\uace0 \uc788\ub294 \ub3d9\uc548 \uc77c\uc815 \uac04\uaca9\uc73c\ub85c \uacf5\uaca9<\/strong>&nbsp;\ud558\ub294 \ucc98\ub9ac\ub97c \uc0dd\uac01\ud574 \ubd05\uc2dc\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc84\ud2bc\uc744 \ub204\ub974\uace0 \uc788\ub294 \ub3d9\uc548 \uc77c\uc815 \uac04\uaca9\uc73c\ub85c \uacf5\uaca9\ud55c\ub2e4\ub294 \uac83\uc740 \uc608\ub97c \ub4e4\uc5b4 \uc288\ud305 \uac8c\uc784 \ucd1d\uc54c\uc758 \ubc1c\uc0ac \ub4f1\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. &#8220;\ubc84\ud2bc\uc744 \ub204\ub974\uace0 \uc788\ub294 \ub3d9\uc548 n\ucd08\ub9c8\ub2e4 \ucd1d\uc54c\uc744 \ubc1c\uc0ac\ud55c\ub2e4&#8221;\ub77c\ub294 \uc0c1\ud669\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c UniRx\ub97c \uc774\uc6a9\ud558\uc9c0 \uc54a\uace0 \uad6c\ud604\ud558\ub294 \uacbd\uc6b0 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc2e4\ud589\ud55c \uc2dc\uac04\uc744 \uae30\ub85d\ud558\uc5ec \ub9e4 \ud504\ub808\uc784 \ube44\uad50\ud558\ub294 \ub4f1 \ubcf5\uc7a1\ud558\uace0 \uadc0\ucc2e\uc740 \uad6c\ud604\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc UniRx\ub97c \uc0ac\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\ud604\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 UniRx;\nusing UniRx.Triggers;\nusing UnityEngine;\n\npublic class UpdateSample3 : MonoBehaviour\n{\n    \/\/ \uc2e4\ud589 \uac04\uaca9\n    [SerializeField]\n    private float intervalSeconds = 0.25f;\n\n    private void Start() =>\n        \/\/ ThrottleFirst\ub294 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc2e4\ud589\ud558\uace0\n        \/\/ \uc77c\uc815 \uc2dc\uac04 OnNext\ub97c \ucc28\ub2e8\ud558\ub294 \uc624\ud37c\ub808\uc774\ud130\n        this.UpdateAsObservable()\n            .Where(_ => Input.GetKey(KeyCode.Z))\n            .ThrottleFirst(TimeSpan.FromSeconds(intervalSeconds))\n            .Subscribe(_ => Attack());\n\n    private void Attack() => Debug.Log(\"Attack\");\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c UniRx\ub97c \uc0ac\uc6a9\ud558\uba74 \uceec\ub809\uc158\uc5d0 \ubcf5\uc7a1\ud55c \ucc98\ub9ac\ub97c LINQ\uc5d0\uc11c \uc9e7\uac8c \uc4f0\ub294 \uac83\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c, \uac8c\uc784 \ub85c\uc9c1\uc744&nbsp;<strong>\uc120\uc5b8\uc801\uc73c\ub85c \uac04\uacb0\ud558\uac8c \uc791\uc131\ud558\ub294 \uac83\uc774 \uac00\ub2a5<\/strong>\ud558\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\ub17c\ub9ac\uac00-\uba85\ud655\ud574\uc9c4\ub2e4\">\ub17c\ub9ac\uac00 \uba85\ud655\ud574\uc9c4\ub2e4<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EB%85%BC%EB%A6%AC%EA%B0%80-%EB%AA%85%ED%99%95%ED%95%B4%EC%A7%84%EB%8B%A4\">\u200b<\/a><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unity\uc5d0\uc11c \uac1c\ubc1c\uc744 \uc9c4\ud589 \ud558\uba74, Update() \ub0b4\uc5d0\uc11c \uac8c\uc784 \ub85c\uc9c1\uc774 \ub2f4\uaca8 \uc5c9\ub9dd\uc774 \ub418\uc5b4\uac00\ub294 \uacbd\uc6b0\uac00 \ub300\ubd80\ubd84\uc774\ub77c\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\uac83\ub3c4 UniRx\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc815\ub9ac \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\uc774\ub3d9-\uc810\ud504-\ucc29\uc9c0\uc2dc-\ud6a8\uacfc\uc74c\uc758-\uc7ac\uc0dd\uc744-\ud558\ub294-\ub85c\uc9c1\uc758-\uc608\">\uc774\ub3d9, \uc810\ud504, \ucc29\uc9c0\uc2dc \ud6a8\uacfc\uc74c\uc758 \uc7ac\uc0dd\uc744 \ud558\ub294 \ub85c\uc9c1\uc758 \uc608<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#%EC%9D%B4%EB%8F%99-%EC%A0%90%ED%94%84-%EC%B0%A9%EC%A7%80%EC%8B%9C-%ED%9A%A8%EA%B3%BC%EC%9D%8C%EC%9D%98-%EC%9E%AC%EC%83%9D%EC%9D%84-%ED%95%98%EB%8A%94-%EB%A1%9C%EC%A7%81%EC%9D%98-%EC%98%88\">\u200b<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub3d9, \uc810\ud504, \ucc29\uc9c0\uc2dc \ud6a8\uacfc\uc74c\uc758 \uc7ac\uc0dd\uc744 \ud55c\ub2e4\ub294 \ub85c\uc9c1\uc744 UniRx\ub97c \uc0ac\uc6a9\ud55c \uacbd\uc6b0\uc640 \uadf8\ub807\uc9c0 \uc54a\uc740 \uacbd\uc6b0\ub97c \uc791\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UniRx\uc5c6\uc774 \uc791\uc131<\/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 UnityEngine;\n\npublic class Sample : MonoBehaviour\n{\n    private CharacterController characterController;\n\n    \/\/ \uc810\ud504 \uc911 \ud50c\ub798\uadf8\n    private bool isJumping;\n\n    void Start()\n    {\n        characterController = GetComponent&lt;CharacterController>();\n    }\n\n    void Update()\n    {\n        if (!isJumping)\n        {\n            var inputVector = new Vector3(\n                Input.GetAxis(\"Horizontal\"),\n                0,\n                Input.GetAxis(\"Vertical\")\n            );\n\n            if (inputVector.magnitude > 0.1f)\n            {\n                var dir = inputVector.normalized;\n                Move(dir);\n            }\n            if (Input.GetKeyDown(KeyCode.Space) &amp;&amp; characterController.isGrounded)\n            {\n                Jump();\n                isJumping = true;\n            }\n        }\n        else\n        {\n            if (characterController.isGrounded)\n            {\n                isJumping = false;\n                PlaySoundEffect();\n            }\n        }\n\n\n    }\n\n    void Jump()\n    {\n        \/\/ Jump \ucc98\ub9ac\n    }\n\n    void PlaySoundEffect()\n    {\n        \/\/ \ud6a8\uacfc\uc74c \uc7ac\uc0dd\n    }\n\n    void Move(Vector3 direction)\n    {\n        \/\/ \uc774\ub3d9 \ucc98\ub9ac\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">UniRx\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc791\uc131<\/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 UniRx;\nusing UniRx.Triggers;\nusing UnityEngine;\n\npublic class Sample : MonoBehaviour\n{\n    private CharacterController characterController;\n\n    \/\/ \uc810\ud504 \uc911 \ud50c\ub798\uadf8\n    private BoolReactiveProperty isJumping = new BoolReactiveProperty();\n\n    void Start()\n    {\n        characterController = GetComponent&lt;CharacterController>();\n\n        \/\/ \uc810\ud504 \uc911\uc774 \uc544\ub2c8\uba74 \uc774\ub3d9\n        this.UpdateAsObservable()\n            .Where(_ => !isJumping.Value)\n            .Select(_ => new Vector3(Input.GetAxis(\"Horizontal\"), 0, Input.GetAxis(\"Vertical\")))\n            .Where(x => x.magnitude > 0.1f)\n            .Subscribe(x => Move(x.normalized));\n\n        \/\/ \uc810\ud504 \uc911\uc774 \uc544\ub2c8\ub77c\uba74 \uc810\ud504\n        this.UpdateAsObservable()\n            .Where(_ => Input.GetKeyDown(KeyCode.Space) &amp;&amp; !isJumping.Value &amp;&amp; characterController.isGrounded)\n            .Subscribe(_ =>\n            {\n                Jump();\n                isJumping.Value = true;\n            });\n\n        \/\/ \ucc29\uc9c0 \ud50c\ub798\uadf8\uac00 \ubcc0\ud654 \ud560\ub54c \uc810\ud504 \uc911 \ud50c\ub798\uadf8\ub97c \ub9ac\uc14b\n        characterController\n            .ObserveEveryValueChanged(x => x.isGrounded)\n            .Where(x => x &amp;&amp; isJumping.Value)\n            .Subscribe(_ => isJumping.Value = false)\n            .AddTo(gameObject);\n\n        \/\/ \uc810\ud504 \uc911 \ud50c\ub798\uadf8\uac00 false\uac00 \ub418\uba74 \ud6a8\uacfc\uc74c\uc744 \uc7ac\uc0dd\n        isJumping.Where(x => !x)\n            .Subscribe(_ => PlaySoundEffect());\n    }\n\n    void Jump()\n    {\n        \/\/ Jump \ucc98\ub9ac\n    }\n\n    void PlaySoundEffect()\n    {\n        \/\/ \ud6a8\uacfc\uc74c \uc7ac\uc0dd\n    }\n\n    void Move(Vector3 direction)\n    {\n        \/\/ \uc774\ub3d9 \ucc98\ub9ac\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704 \ub450\uac00\uc9c0\ub97c \ube44\uad50\ud558\uba74 \uc5b4\ub5bb\uc2b5\ub2c8\uae4c?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UniRx\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 Update \ub0b4\uc5d0\uc11c \uc5ec\ub7ec \uc791\uc5c5\uc744 \ud568\uaed8 \uc791\uc131\ud574\uc57c \ud558\uae30 \ub54c\ubb38\uc5d0 if\ubb38\uc5d0 \uc758\ud574 \uc911\ucca9\uc774 \ubc1c\uc0dd\ud558\uac70\ub098 \ubcc0\uc218\uc758 \ubc94\uc704\uac00 \ubaa8\ud638\ud574\uc9c0\ub294 \ub4f1\uc758 \ubb38\uc81c\uc810\uc774 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc, UniRx\ub97c \uc0ac\uc6a9\ud558\uc5ec Update\ub97c \uc2a4\ud2b8\ub9bc\ud654 \ud558\ub294 \uacbd\uc6b0&nbsp;<strong>\ub85c\uc9c1 \ub2e8\uc704\ub85c \ucc98\ub9ac\ub97c \ubd84\ud560\ud558\uace0 \ub098\uc5f4\ud574 \uae30\uc220\ud560 \uc218<\/strong>&nbsp;\uc788\uac8c \ub418\uc5c8\uace0, \ubcc0\uc218\uc758 \ubc94\uc704\ub3c4 \uc2a4\ud2b8\ub9bc \ub0b4\uc5d0 \ub2eb\ud78c \uad6c\ud604\uc774 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uc640 \uac19\uc774 Update\ub97c \uc2a4\ud2b8\ub9bc\ud654\ud558\ub294 \uac83\uc73c\ub85c \ucc98\ub9ac\ub97c \uc801\uc808\ud55c \ub2e8\uc704\ub85c \uad6c\ubd84\ud558\uc5ec \uae30\uc220\ud560 \uc218 \uc788\uac8c \ub418\uba70, \ubcc0\uc218\uc758 \ubc94\uc704\ub3c4 \uba85\ud655\ud788 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c ObserveEveryValueChanged \ub300\ud574\uc11c\ub294 \ub4a4\uc758 \ubcf4\ucda9 \ub0b4\uc6a9\uc744 \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">3. \uc815\ub9ac<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Update()\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc740 2\uac00\uc9c0<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc77c\ubc18\uc801\uc778 \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0&nbsp;<code>UpdateAsObservable()<\/code>\ub97c \ud558\uba74 \ub41c\ub2e4.<\/li>\n\n\n\n<li>\ud2b9\uc218 \uc6a9\ub3c4\uc758 \uacbd\uc6b0&nbsp;<code>Observable.EveryUpdate()<\/code>\ub97c \uc0ac\uc6a9 \ud558\uba74 \ub41c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Update()\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\uba74 \ub85c\uc9c1\uc744 \uc124\uba85\ud558\uae30 \uc26c\uc6cc\uc9c4\ub2e4.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UniRx \uc624\ud37c\ub808\uc774\ud130\ub97c \uac8c\uc784\ub85c\uc9c1\uc5d0 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\uc120\uc5b8\uc801\uc73c\ub85c, \uac04\uacb0\ud558\uace0 \uc77d\uae30 \uc27d\uac8c \uc791\uc131\ud560 \uc218 \uc788\uac8c \ub41c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">4. \ucd94\uac00<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"observeeveryvaluechanged\uc5d0-\ub300\ud574\">ObserveEveryValueChanged\uc5d0 \ub300\ud574<a href=\"https:\/\/tech.lonpeach.com\/2020\/02\/23\/Getting-Started-4#observeeveryvaluechanged%EC%97%90-%EB%8C%80%ED%95%B4\">\u200b<\/a><\/h2>\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=\"\">var charcterController = GetComponent&lt;CharacterController>();\n\n\/\/ CharacterController\uc758 IsGrounded\uc744 \uac10\uc2dc\n\/\/ false \u2192 true\uac00 \ub418\uba74 \ub85c\uadf8\ucd9c\ub825\ncharcterController\n    .ObserveEveryValueChanged(c => c.isGrounded)\n    .Where(x => x)\n    .Subscribe(_ => Debug.Log(\"\ucc29\uc9c0!\"))\n    .AddTo(gameObject);\n\n\/\/ \u2191 \ucf54\ub4dc\ub294 \u2193\uc640 \uac70\uc758 \ub3d9\uc758\uc5b4\nObservable.EveryUpdate()\n    .Select(_=>charcterController.isGrounded)\n    .DistinctUntilChanged()\n    .Where(x=>x)\n    .Subscribe(_ => Debug.Log(\"\ucc29\uc9c0!\"))\n    .AddTo(gameObject);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c0\ub09c\ubc88&nbsp;<code>ObserveEveryValueChanged<\/code>\ub294&nbsp;<code>Observable.EveryUpdate<\/code>&nbsp;+&nbsp;<code>Select<\/code>&nbsp;+&nbsp;<code>DistinctUntilChanged<\/code>\uc758 \ucd95\uc57d\uc774\ub77c\uace0 \uc124\uba85\ud588\uc2b5\ub2c8\ub2e4. \uc0ac\uc2e4 \uc774 \uc124\uba85\uc740 \ubbf8\ubb18\ud558\uac8c \uc798\ubabb \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ObserveEveryValueChanged<\/code>\ub294 \uac10\uc2dc \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8\ub97c&nbsp;<a href=\"https:\/\/docs.microsoft.com\/ko-kr\/dotnet\/api\/system.weakreference?view=netframework-4.8\" target=\"_blank\" rel=\"noreferrer noopener\">\uc57d \ucc38\uc870(WeakReference)<\/a>\uc5d0\uc11c \ucc38\uc870 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc989,&nbsp;<strong>ObserveEveryValueChanged\uc758 \ubaa8\ub2c8\ud130\ub9c1\uc740 GC\uc758 \ucc38\uc870 \uce74\uc6b4\ud2b8\uc5d0 \ud3ec\ud568\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/strong>&nbsp;\ub610\ud55c ObserveEveryValueChanged\ub294 \uac10\uc2dc \ub300\uc0c1\uc758 \uac1d\uccb4\uac00 GC\uc5d0 \ud68c\uc218\ub418\uba74&nbsp;<strong>OnCompleted\ub97c \uc790\ub3d9\uc73c\ub85c \ubc1c\ud589<\/strong>&nbsp;\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uc810\uc5d0 \uc720\uc758\ud558\uc5ec&nbsp;<code>ObserveEveryValueChanged<\/code>\ub97c \uc774\uc6a9\ud558\uba74 \uc88b\uc744 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UniRx \uc785\ubb38 \uc2dc\ub9ac\uc988 \ubaa9\ucc28\ub294 \uc774\ucabd 0. \uc774\uc804 \ubcf5\uc2b5 \uc774\uc804\uc5d0\ub294 \uc2a4\ud2b8\ub9bc\uc758 \uad6c\ucd95 \ubc29\ubc95\uc744 \uba87 \uac00\uc9c0 \uc18c\uac1c \ud588\uc2b5\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \ub354 \uc2e4\uc6a9\uc131\uc774 \ub192\uc740 &#8220;Update\ub97c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95&#8221;\uc5d0 \uc911\uc810\uc744 \ub450\uace0 \uc124\uba85 \ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \ud3ec\uc2a4\ud2b8\uc5d0 \uc801\uc740 \ub0b4\uc6a9\uc740 \uacfc\uac70\uc5d0 \uc801\uc740 [[UniRx]&nbsp;Update()\ub97c Observable\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95]({% post_url 2019-10-10-UniRx-How-to-convert-Update-to-Observable %})\uc758 \ub0b4\uc6a9\uc744 \uace0\uccd0 \uc4f4 \ub0b4\uc6a9 \uc785\ub2c8\ub2e4. 1. Update()\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95 Unity\uc758 Update() \ud638\ucd9c\uc744 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 &hellip;<br \/><a href=\"http:\/\/yoonhada.com\/?p=1454\" class=\"more-link pen_button pen_element_default pen_icon_arrow_double\"><span class=\"screen-reader-text\">UniRx \uc785\ubb38 4 &#8211; Update\ub97c \uc2a4\ud2b8\ub9bc\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95 \ubc0f \uc7a5\uc810<\/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-1454","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\/1454","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=1454"}],"version-history":[{"count":9,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1454\/revisions"}],"predecessor-version":[{"id":1800,"href":"http:\/\/yoonhada.com\/index.php?rest_route=\/wp\/v2\/posts\/1454\/revisions\/1800"}],"wp:attachment":[{"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1454"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/yoonhada.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}