ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 조건문 if, Switch 모든 사용법 정리 / 뭐가 더 좋은가? (1)
    유니티(Unity)/유니티 코딩 2019. 2. 9. 18:24

    해당 티스토리 페이지는 필자가 유니티 C# 개발을 하면서 학습한 내용들을 기록하고 공유하는 페이지입니다 !

    - 틀린 부분이 있거나, 수정된 부분이 있다면 댓글로 알려주세요 !

    - 해당 내용을 공유 or 퍼가도 좋으나, 출처를 꼭 명시해주세요 !

    - 해당 글의 모든 저작권은 Chameleon Studio에 있습니다.

    - 방문해주셔서 감사합니다 ^^



    썸네일 이미지입니다.유니티 조건문 if, Switch 사용법 정리


    안녕하세요! 카멜레온입니다 ㅎㅎ


    오늘은 조건문에 대해 알아보는 시간을 가지도록 하겠습니다 !


    조건문은 코딩을 할 때 빠지지 않는 아~주 자주 쓰는 문법이라고 할 수 있겠습니다.


    우선 들어가기에 앞서, 부제로 '뭐가 더 좋은가?'를 달았는데,


    확실하게 말씀드리면, 그런 거 없습니다 !


    CPU 최적화를 위하여, 과부화 방지를 위하여 등등


    어떤 조건문이 조금이라도 더 좋은가 이런 질문들을 많이 보았는데,,


    그런 건 없지요. 둘 다 똑같습니다 ㅎㅎ


    어디서는 else if 절이 4번이상 반복되면 Switch case문을 사용하라는 글도 보았는데,,


    사실 크게 상관없습니다.


    오히려, 반복문의 지나친 사용이나 Update문 FixedUpdate문의 남용, Debug.Log의 잦은 사용 등이 더 문제가 됩니다.


    그럼 둘 다 똑같은데 그냥 하나만 쓰지 왜 조건문이 유니티 C#문법에 두 개가 있느냐?


    그건 가독성의 문제입니다.


    어찌됐던 많은 양의 코드를 입력하다 보면, 스크립트를 읽을 때,


    읽기 편한게 좋겠지요 ㅎㅎ


    오늘 조건문을 알아보면서 앞으로는,


    뭐가 CPU 최적화에 좋은가에 대한 고민은 그만하고,


    내가 구현하는 코딩에서 어떻게 하면 가독성이 좋아질까에 대한 고민을 해보는 게 좋을 것 같습니다.


    시작해봅시다 ㅎㅎ



    if 절과 else if절 그리고 else절


    우선, 우리에게 친숙한 if 절과 else if 절을 봅시다.


    if 절은 '만약'이라고 이해하시면 편합니다.


    뭐, 영어 뜻도 그렇지요?



    else if 절 또한 영어뜻 처럼 '그렇지 않고, 만약 ~(이)가 참이라면'이라고 이해하시면 편합니다.


    하지만, else if 절은 if 절과는 다르게 혼자 쓰지 못합니다.


    '그렇지 않고, 만약 ~(이)가 참이라면' 이라는 뜻이기 때문에,


    뭐가 '그렇지 않고'인지 알아야하기 때문이죠.


    그래서 if 절 뒤에 나와야합니다.



    마지막으로 else 절 또한 혼자 쓰지 못합니다.


    if 절의 가장 마지막 부분에서 필요에 의해 사용합니다.


    else 절은 위의 '모든 내용이 거짓이라면' 이라는 뜻으로 이해하시면 편합니다.



    else if 절이 몇개이건 상관없습니다.


    그저 위의 내용이 모두 거짓이라면 else 절의 '~~가 되라'가 실행되게 됩니다.


    그렇기 때문에, else 뒤에는 () 괄호가 필요없습니다.


    해당 코드를 활용하여 간단한 예제를 만들어 볼까요?



    아래 코드를 캡처해놓은 사진입니다.이미지가 안보이시는 분들은 아래 코드 보기를 눌러서 코드를 확인해주세요.




    게임이 시작하면,


    '만약, 스크립트가 붙어 있는 게임 오브젝트의 X의 위치 값이


    0보다 작거나 같으면, 해당 로그를 찍고


    X값을 3으로 옮겨라'라는 내용입니다.


    한 번 유니티로 돌아와서 보도록 하겠습니다.





    젤랑이의 위치를 0으로 놓고,


    시작해보니 해당 로그가 찍히고 젤랑이가 3의 위치로 이동하는 것을 확인했습니다.


    그럼 젤랑이의 위치를 0보다 작거나 같은 곳에 두지 않고 애초에 큰 곳으로 두면 어떻게 될까요?


    게임 오브젝트의 X값의 위치를 1로 두고 시작한다면, 아무 일도 일어나지 않습니다.


    왜 일까요?


    조건이 맞지 않았기때문입니다.


    조건이 "만약 게임 오브젝트의 X값의 위치가 0보다 작거나 같으면" 이였기때문에,


    1이라면 조건이 성립되지 않아 if 절 속의 내용은 실행되지 않는 것이죠.


    이번에는 else if절을 넣어서 확인해볼까요?



    아래 코드를 캡처해놓은 사진입니다.이미지가 안보이시는 분들은 아래 코드 보기를 눌러서 코드를 확인해주세요.



    이번에는 else if 절을 넣어보았습니다.


    else if 절에는 게임 오브젝트의 X 위치가 0보다 작거나 같지 '않고',


    만약, 0보다 크다면 게임 오브젝트의 X 위치를 -3으로 만드는 코딩입니다.


    유니티로 돌아와서 볼까요?





    이런, 젤랑이의 X 위치가 0이었기때문에,


    else if 절이 실행되지 않고


    if 절에서 실행이 끝났습니다.


    이렇듯, else if 절은 이전의 식이 성립하면


    이전의 식에서 호출을 종료하고, 더 이상 다음 else if 절로 진행이 되지 않는 것을 확인하였습니다.


    if 절에서 호출이 끝나지 않고, else if 절까지 호출을 오도록 하기 위하여,


    젤랑이의 X 위치를 3으로 하고, ▶을 눌러보도록 하겠습니다.





    젤랑이의 위치를 3으로 놓고 시작해보니 else if 절이 실행되었음을 확인하였습니다.


    이번에는 else 절도 사용해볼까요?


     

    아래 코드를 캡처해놓은 사진입니다.이미지가 안보이시는 분들은 아래 코드 보기를 눌러서 코드를 확인해주세요.



    이번에는 코드를 이렇게 바꿔보겠습니다.


    if 절에는 '만약, 젤랑이의 X의 위치가 -1보다 작거나 같으면, 젤랑이의 X 위치를 3으로 옮겨라'


    else if 절에는 '그렇지 않고, 만약, 젤랑이의 X의 위치가 1보다 크면 젤랑이의 X 위치를 -3으로 옮겨라'


    else 절에는 위의 내용이 '모두 거짓이면, 젤랑이의 Y 위치를 -3으로 내려라'


    으로 코드를 바꿔보았습니다.


    우리는 if 절과 else if 절이 모두 거짓이 되게하여, else 절이 잘 실행되는지 확인하기 위해


    젤랑이의 X 위치를 0으로 두고, ▶을 눌러봅시다.





    X가 -1보다 작거나 같지도 않고, 1보다 크지도 않았기때문에


    젤랑이의 Y 위치가 -3으로 내려간 것을 확인했습니다.


    이렇게 if 절, else if 절, else 절에 대한 로직을 알아보았습니다 !


    추가로 심화(?) 과정을 더 적어볼까합니다 ㅎㅎ



    if와 return을 활용한 else if 효과


    위에서 적은 내용들만 알아도 if절에 대한 모든 이해를 했다고 보아도 됩니다.


    여기서부터 적는 것은 그냥 가독성을 위한 내용이라서 필요하신 분들만 참고해주시면 좋겠습니다 ㅎㅎ


    어떤 분들은,


    if (만약, ~가 참이라면)

    {

        ~~가 되라.

    }

    else if(그렇지 않고, 만약, ~가 참이라면)

    {

        ~~가 되라.

    }

    else if(그렇지 않고, 만약, ~가 참이라면)

    {

        ~~가 되라.

    }

    else if(그렇지 않고, 만약, ~가 참이라면)

    {

        ~~가 되라.

    }


    이러한 형태의 내용이 많아진다면, 가독성이 떨어진다고 하시는 분들도 있더라구요.


    그래서 if 와 return을 사용해서 else if와 똑같은 효과를 낸다고합니다.


    if (만약, ~가 참이라면)

    {

        ~~가 되라.

        return;          << 참이 아니면 돌아가라.

    }

    if (만약, ~가 참이라면)

    {

        ~~가 되라.

        return;          

    }

    if (만약, ~가 참이라면)

    {

        ~~가 되라.

        return;          

    }

    if (만약, ~가 참이라면)

    {

        ~~가 되라.

        return;          

    }


    이런식으로 말이죠.


    저는 위 두 방법 중 자신이 편한 코딩을 하는 것을 추천드립니다.


    지금까지 조건문의 사용법 정리를 해보았는데,


    글이 길어지다보니, if절에 대한 것만 알아보게되었네요 !


    다음 포스팅을 정리해서 여기에 링크를 걸어두겠습니다. >클릭<


    다음 포스팅은 Switch에 대한 모든 사용법을 해볼게요.


    이상 포스팅을 마치며,


    궁금한 사항은 댓글을 달아주세요.


    또, 카멜레온이 다뤘으면 좋겠다하는 포스팅 내용을 달아주시면, 해당 내용에 관한 포스팅도 해보도록 하겠습니다.


    감사합니다 ! !


    Chameleon Studio가 만든 게임하러가기


    <젤랑점핑>

    안드로이드- market://details?id=com.Cameleon.TangTangBall

    IOS- itms-apps://itunes.apple.com/app/id1429522379



    <크러쉬팡>

    안드로이드- market://details?id=com.Chameleon.CrushPang 

    IOS- itms-apps://itunes.apple.com/app/id1450109331

    댓글

Designed by Tistory.