Пачынаў кар’еру ў клубе сербскай Суперлігі «Борац» з роднага горада Чачак. Аднак замацавацца ў «Борацы» не здолеў, таму аддаваўся ў арэнду клубу Першай лігі «Младаст» (Лучані). У складзе «Младасці» стаў асноўным іграком, а ў 2013 годзе таксама і капітанам каманды. Па выніках сезона 2013/14 дапамог свайму клубу выйсці ў Суперлігу.
У лютым 2015 года накіраваўся на прагляд у барысаўскі БАТЭ і здолеў добра сябе зарэкамендаваць. 21 лютага 2015 года згуляў свой апошні матч за «Младаст», а 6 сакавіка падпісаў кантракт з БАТЭ[2]. У хуткім часе замацаваўся ў асноўным складзе барысаўчан на пазіцыі цэнтральнага абаронцы, дзе замяніў Ягора Філіпенку, які перайшоў у «Малагу». Дзякуючы выдатнай гульне, Мілунавіч быў прызнаны найлепшым абаронцам чэмпіянату Беларусі 2015[3].
У снежні 2015 года падоўжыў кантракт з БАТЭ[4]. Пачатак сезона 2016 прапусціў з-за траўмы, пазней вярнуўся ў строй, але ў ліпені з-за чарговай траўмы выбыў да канца сезона. У сезоне 2017 вярнуўся ў стартавы склад, хоць часам выбываў з-за траўм, і па выніках сезона зноў быў прызнаны найлепшым абаронцам чэмпіянату.
Большую частку сезона 2018 прапусціў з-за траўмы, згуляў усяго ў 11 матчах (5 у чэмпіянаце Беларусі, 3 у еўракубках, 3 у Кубку і Суперкубку Беларусі). У снежні 2018 года ў якасці свабоднага агента перайшоў у бялградскую «Црвену Звезду», падпісаўшы кантракт на 2,5 гады[5]. Разам з клубам стаў трохразовым чэмпіёнам Сербіі.
У чэрвені 2021 года на правах свабоднага агента падпісаў двухгадовы кантракт з турэцкім «Аланьяспорам»[6]. У ліпені 2022 года пакінуў клуб і хутка вярнуўся ў «Црвену Звезду».